PCB MS SQL 行转列(动态拼SQL)
一.原数据:
SELECT inman,indate FROM [fp_db].[dbo].[ppezhpbb] WHERE indate > '2016-5-1' AND indate < '2016-6-1' ORDER BY indate
二.转换后(动态拼接SQL):
--数据先存临时表 SELECT inman,indate INTO #tab FROM [fp_db].[dbo].[ppezhpbb] WHERE indate > '2016-5-1' AND indate < '2016-6-1' --拼接字符串 DECLARE @sql NVARCHAR(MAX) SET @sql = 'SELECT CONVERT(varchar(100), indate, 23) indate ' SELECT @sql = @sql + ' ,sum(case when inman=''' + inman + ''' then 1 else 0 end) ' + inman --行转列统计 FROM #tab GROUP BY inman --需由列转行的字段 SET @sql = @sql + ' FROM [fp_db].[dbo].[ppezhpbb] WHERE indate > ''2016-5-1'' AND indate < ''2016-6-1'' ' SET @sql = @sql + ' GROUP BY CONVERT(varchar(100), indate, 23) ' SET @sql = @sql + ' ORDER BY indate ' SELECT @sql exec sp_executesql @sql
作者:pcbren 微信号:yadnfku QQ号: 254566449
博客地址:https://www.cnblogs.com/pcbren/
声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。
如果大家感觉我的博文对大家有帮助,请推荐支持一把。