首页 > 解决方案 > 按名称查询报表的 SQL 查询,其中许多列按状态计数

问题描述

是否可以通过 sql 查询按状态计数的名称生成报告组。

表:

我需要做一个报告,按状态组按服务计数:

列结果:服务名称、状态名称 1、状态名称 2、状态名称 3、总计

行结果:

service name 1, 30, 10, 20, 60
service name 2, 10, 5, 40, 55
service name 3, 0, 2, 8, 10

标签: sqloraclecountpivotaggregate-functions

解决方案


您似乎想要连接和条件聚合:

select se.name as service_name,
    sum(case when st.name = 'status 1' then 1 else 0 end) as cnt_status_1,
    sum(case when st.name = 'status 2' then 1 else 0 end) as cnt_status_2,
    sum(case when st.name = 'status 3' then 1 else 0 end) as cnt_status_3,
    count(*) as total
from project p
inner join status  st on st.id = p.status_id
inner join service se on se.id = p.service_id
group by se.id, se.name

推荐阅读