PCB MS SQL 行转列(动态拼SQL)

Posted pcbren

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于PCB MS SQL 行转列(动态拼SQL)的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 动态行转列(参数化表名分组列行转列字段字段值)

通过sql实现动态行转列

SQL Server 动态行转列(参数化表名分组列行转列字段字段值)

SQL server 动态行转列

sql server 动态行转列

sql学习系列-行转列问题 动态列展示