我有一个如下的问题
select project_task_id,
status_id,
sum(case when StatusID=1 then 1 else 0 end) as task_id=1,
sum(case whenStatusID=2 then 1 else 0 end) as task_id=2,
sum(case when StatusID=3 then 1 else 0 end) as task_id=3,
sum(case when StatusID=4 then 1 else 0 end) as task_id=4,
sum(case when StatusID=5 then 1 else 0 end) as task_id=5,
sum(case when StatusID=6 then 1 else 0 end) as task_id=6,
sum(case when StatusID=7 then 1 else 0 end) as task_id=7,
from"Projects".work_unit_status
group by project_task_id,status_id;
我得到以下附加输出:
https://i.stack.imgur.com/1wfd1.png
我想得到以下预期结果:
https://i.stack.imgur.com/zql9z.png
包括零如果状态为空,请任何一个帮助
3条答案
按热度按时间yacmzcpb1#
在不知道确切的表结构的情况下,我假设status\u id和statusid引用同一列(如果它们是不同的列,我们需要在计数中使用statusid。)
根据预期的输出,您要计算状态标识并按项目任务标识分组。要确保每个任务都表示每个状态,首先,我们需要创建所有可能的项目任务标识/状态标识组合的子查询。然后我们将其与原始表的聚合值一起使用。
如果您真的需要硬编码从1到7的状态,请使用下面的查询。
d5vmydt92#
使用
in
你的案子呢trnvg8h33#
尝试以下方法:使用all sum列的加法