SQL Server 行轉列

CREATE TABLE #temp1(部門 VARCHAR(200),獎勵金額 DECIMAL(18,2),罰款金額 DECIMAL(18,2))
INSERT INTO #temp1 VALUES('人事部',2000,60)
INSERT INTO #temp1 VALUES('車隊',1000,20)
INSERT INTO #temp1 VALUES('車隊',3000,50)

CREATE TABLE #temp2(分類編號 VARCHAR(200),分類名稱 VARCHAR(200))
INSERT INTO #temp2 VALUES('1001','獎勵金額')
INSERT INTO #temp2 VALUES('1002','罰款金額')

DECLARE @sql varchar(max)
SET @sql=' select 分類名稱 '
SELECT @sql=@sql+' ,max(case 分類名稱 when ''獎勵金額'' then '+CAST(a.獎勵金額 AS VARCHAR(100))+' when ''罰款金額'' then '+CAST(a.罰款金額 AS VARCHAR(100))+' else 0 end)['+部門+'] '
FROM (SELECT 部門,SUM(獎勵金額) AS 獎勵金額,SUM(罰款金額) AS 罰款金額 FROM #temp1 GROUP BY 部門) a
SET @sql=@sql+' from #temp2 group by 分類名稱'
EXEC(@sql)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章