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

 一.原数据:

SELECT inman,indateFROM [fp_db].[dbo].[ppezhpbb]WHERE indate > 2016-5-1 AND indate < 2016-6-1ORDER BY indate

 

二.转换后(动态拼接SQL):

--数据先存临时表SELECT inman,indate INTO #tabFROM [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 #tabGROUP 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 @sqlexec sp_executesql @sql

 

相关文章