數據源 | |||
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)統計