SQL 按名称查询包含许多按状态计数的列的报告

SQL query for report by name with many columns count by status

是否可以通过 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

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

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