查同一表多条记录

malimalihong 2019-05-07 05:41:14
想从表1数据得到表2

请问大神们,如何写SQL
...全文
39 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dear SQL(燊) 2019-05-07
  • 打赏
  • 举报
回复

if object_id('tempdb..#data') is not null drop table #data
if object_id('tempdb..#list') is not null drop table #list

select ID=1,[name]='A',price=3.5 into #list union all
select ID=1,[name]='A',price=2 union all
select ID=1,[name]='A',price=2 union all
select ID=1,[name]='A',price=2.8 union all
select ID=2,[name]='b',price=100 union all
select ID=2,[name]='b',price=101 

;
with list as(
	select id,[name],price
	from #list
	group by id,[name],price
)
select *
	,rid='price'+cast(ROW_NUMBER()over(partition by ID,[name] order by price ) as varchar(50))
into #data
from list

declare @sql nvarchar(max),@colname nvarchar(max)=''
;
with list as(
	select distinct rid
	from #data
)
select @colname=@colname+',['+rid+']'
from list

print @colname

set @sql='
select *
from #data pivot(max(price) for rid in('+RIGHT(@colname,len(@colname)-1)+'))pt
'
exec(@sql)

/*
id          name price1                                  price2                                  price3
----------- ---- --------------------------------------- --------------------------------------- ---------------------------------------
1           A    2.0                                     2.8                                     3.5
2           b    100.0                                   101.0                                   NULL

(2 行受影响)
*/
卖水果的net 2019-05-07
  • 打赏
  • 举报
回复
某个商品有 100 个价格,要增加 100 列吗?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧