日期:2014-05-17  浏览次数:21105 次

T-Sql问题求助。

select UnsubmittedCount = (case when ApproveStatus in ('未提交', '已提交') then count(FormID) end),
ApprovedCount = (case when ApproveStatus in ('已审核') then count(FormID) end)
from formLogistic
group by ApproveStatus


返回数据:
UnsubmittedCount      ApprovedCount 
NULL                  4
1                     NULL

希望的结果:
UnsubmittedCount      ApprovedCount 
1                     4


请问该怎么改?

------解决方案--------------------
引用:
你的输出结果为:
1    0
0    4

把最后一行group by ApproveStatus删除即可,复制了你的代码修改的,最后那行忘记删除了。
------解决方案--------------------


;with c1(UnsubmittedCount,ApprovedCount) AS
(
select null, 4 union all
select 1, null
)  --原来查询结果为c1
select 
UnsubmittedCount=SUM(UnsubmittedCount),
ApprovedCount=SUM(ApprovedCount)
from c1


------解决方案--------------------
SELECT (
SELECT COUNT(FormID) FROM formLogisticgroup WHERE ApproveStatus in ('未提交', '已提交'),
SELECT COUNT(FormID) FROM formLogisticgroup WHERE ApproveStatus in ('已审核'),
)