SQL行轉列+動態拼接SQL


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

 

顯示效果:

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

規則:

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

--> 測試數據:#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 --------------開始查詢--------------------------

SELECT * FROM #tb AS T

declare @sql varchar(max)

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]

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'

EXEC(@sql)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM