请教一个关于SQL行列转置的问题。

qq_31680453 2018-08-15 12:02:17
如图数据库结构,希望通过SQL查询出如图的查询结果。需要动态查询,采购商和商品的名称都不固定,商品数量也不确定,因此需要商品列动态增加。谢谢!
...全文
190 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2018-08-15
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([ID] int,[采购商] nvarchar(21),[商品] nvarchar(23))
Insert #T
select 1,N'A',N'橘子' union all
select 2,N'B',N'西瓜' union all
select 3,N'A',N'葡萄' union all
select 4,N'B',N'哈密瓜' union all
select 5,N'B',N'橘子' union all
select 6,N'C',N'山竹' union all
select 7,N'A',N'芒果' union all
select 8,N'A',N'香蕉'
Go
--测试数据结束
DECLARE @sql VARCHAR(MAX)
SET @sql = '
;WITH cte AS (
SELECT *,ROW_NUMBER()OVER(PARTITION BY 采购商 ORDER BY ID) rn FROM #T
)
select 采购商'
;WITH cte AS (
SELECT *,ROW_NUMBER()OVER(PARTITION BY 采购商 ORDER BY ID) rn FROM #T
)
SELECT @sql = @sql + ',max(case rn when ' + RTRIM(a.rn)
+ ' then 商品 else null end)[商品' + RTRIM(a.rn) + ']'
FROM ( SELECT DISTINCT
rn
FROM cte
) a
SET @sql = @sql
+ ' from cte group by 采购商'
EXEC(@sql)



22,300

社区成员

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

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