SQL行轉列+動態拼接SQL

數據源      
Name AreaName qty Specific
葉玲 1 60 1
葉玲 2 1 1
葉玲 6 1 0
葉玲 7 5 0
葉玲 8 1 1

 

顯示效果:sql

Name 1 2 8 其它 總數
葉玲 60 1 1 6 68

規則:測試

Specific=1的要單獨統計,Specific=0的合併統計spa

--> 測試數據:#tb IF OBJECT_ID('tempdb.dbo.#tb') IS NOT NULL DROP TABLE #tb GO CREATE TABLE #tb([Name] VARCHAR(4),[AreaName] INT,[qty] INT,[Specific] INT) INSERT #tb SELECT '葉玲',1,60,1 UNION ALL SELECT '葉玲',2,1,1 UNION ALL SELECT '葉玲',6,1,0 UNION ALL SELECT '葉玲',7,5,0 UNION ALL SELECT '葉玲',8,1,1 --------------開始查詢--------------------------ci

SELECT * FROM #tb AS Tqt

declare @sql varchar(max)table

select @sql=isnull(@sql+','+CHAR(13),'')+'sum(case when [AreaName]='+LTRIM([AreaName])+' then [qty] else 0 end) as '+QUOTENAME([AreaName]) from #tb WHERE [Specific]=1 GROUP BY [AreaName]class

select @sql=@sql+','+CHAR(13)+'sum(case when [Specific]=0 then [qty] else 0 end) as '+QUOTENAME('其它') SELECT @sql='select [Name],'+@sql+',sum([qty]) as [總數] from #tb group by Name'select

EXEC(@sql)統計

相關文章
相關標籤/搜索