动态行转列

chris_126 2015-11-09 02:13:54
表1
fentry fbillno value(字符型)
1 B01 test1
2 B01 test2
3 B01 test3
1 B02 H_test1
2 B02 H_test2

目标表
fbillno 1 2 3
B01 test1 test2 test3
B02 H_test1 H_test2
...全文
55 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaaa1185164 2015-11-11
  • 打赏
  • 举报
回复
额,我也在弄这个,受教了
gw6328 2015-11-09
  • 打赏
  • 举报
回复

create TABLE #t(fentry INT,fbillno VARCHAR(10),VALUE VARCHAR(10));
INSERT INTO #T (fentry,fbillno,value) VALUES 
(1 ,'B01','test1'  ),
(2 ,'B01','test2'  ),
(3 ,'B01','test '  ),
(1 ,'B02','H_test1'),
(2 ,'B02','H_test2');

--SELECT * FROM #t;

DECLARE @sql NVARCHAR(MAX);
DECLARE @s NVARCHAR(MAX);

set @s=STUFF((SELECT ',['+CAST(fentry AS VARCHAR(5))+']' FROM #t GROUP BY fentry FOR XML PATH('')),1,1,'');

SET @sql='select fbillno,'+@s+' from #t pivot (max(value) for fentry in ('+@s+')) pt';
EXEC(@sql);

DROP TABLE #t;

/*
B01	test1	test2	test 
B02	H_test1	H_test2	NULL
*/

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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