unitid applynum state
62361 1 1
62361 1 1
62361 1 2
62361 1 0
62361 1 3
执行这个查询 为什么结果没有合并?
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 未审核 已通过 未通过
62361 NULL 1 NULL
62361 NULL 1 NULL
62361 NULL NULL 1
62361 1 NULL NULL
62361 NULL NULL NULL
------解决方案--------------------
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