首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请教PIVOT 转表

2013-07-09 
请问PIVOT 转表unitidapplynumstate62361116236111623611262361106236113执行这个查询为什么结果没有合并?

请问PIVOT 转表

unitid  applynum   state
6236111
6236111
6236112
6236110
6236113


执行这个查询  为什么结果没有合并?
SELECT UnitiD,[0] 未审核,[1] 已通过,[2] 未通过 
FROM FormationApply f 
PIVOT(SUM(f.ApplyNum) FOR f.State IN ([0],[1],[2])) AS pvt
 ORDER BY unitid


结果是
unitid  未审核  已通过  未通过
62361NULL1NULL
62361NULL1NULL
62361NULLNULL1
623611NULLNULL
62361NULLNULLNULL

[解决办法]
declare @test table (unitid int,applynum int,state int)

INSERT INTO @TEST VALUES (62361,1,1),(62361,1,1),(62361,1,2),(62361,1,0),(62361,1,3)

SELECT unitid,
SUM(CASE WHEN state = 0 THEN applynum ELSE 0 END)  AS 未审核,
SUM(CASE WHEN state = 1 THEN applynum ELSE 0 END)  AS 已通过,
SUM(CASE WHEN state = 2 THEN applynum ELSE 0 END)  AS 未通过
FROM @TEST 
GROUP BY unitid

[解决办法]

select UnitiD,
       [0] 未审核,
       [1] 已通过,
       [2] 未通过
 from (select unitid,applynum,[state] from FormationApply) f
 pivot(count(ApplyNum) FOR [State] IN ([0],[1],[2])) AS pvt
 order by unitid

热点排行