我正在开发一个需要在表上写查询的应用程序,该表将在单个查询中返回多个列数。
经过研究,我能够为单个sourceId开发查询,但是如果我想要多个sourceId的结果,将会发生什么。
select '3'as sourceId, (select count(*) from event where sourceId = 3 and plateCategoryId = 3) as TotalNewCount, (select count(*) from event where sourceId = 3 and plateCategoryId = 4) as TotalOldCount;
我需要获取多个源ID的TotalNewCount和TotalOldCount,例如(3,4,5,6)
谁能帮忙,如何修改查询以返回三列的结果集,包括列表(3,4,5,6)中所有来源的数据
谢谢
您可以一次完成所有源ID:
select source_id sum(case when plateCategoryId = 3 then 1 else 0 end) as TotalNewCount, sum(case when plateCategoryId = 4 then 1 else 0 end) as TotalOldCount from event group by source_id;
如果要限制源ID,请使用where(之前的group by)。
where
group by
注意:上面的代码在Vertica和MySQL中都可以使用,并且作为标准SQL可以在任何数据库中使用。