在SQL查询中同时使用计数和并集
我有两个SQL查询在SQL查询中同时使用计数和并集,sql,union,union-all,Sql,Union,Union All,我有两个SQL查询 select count ( distinct w.processno ) AS "Number of Processes", y.userid from upmfolder f, upmperson p, w2process w, w2processcheck y where f.personid = p.personid and f.folderid = w.keynumb and w.Processno = y.processid and w.keyobject ='U
select count ( distinct w.processno ) AS "Number of Processes", y.userid from upmfolder f, upmperson p, w2process w, w2processcheck y where f.personid = p.personid and f.folderid = w.keynumb and w.Processno = y.processid and w.keyobject ='UPMFolder' group by 2
另一个类似的例子是:
select count ( distinct w.processno ) AS "Number of Processes", y.userid from upmfolder f, upmperson p, w2process w, w2processcheck y where f.personid = p.personid and f.payrollmemberid = w.keynumb and w.keyobject = 'UPMPayrollmember' and w.Processno = y.processid group by 2
如何将这两个查询组合成一个查询?因此,计数和组仍能正常工作。我尝试了使用
联合所有
,但是没有成功。我需要做什么?您可以通过条件聚合来完成。对于计数(不同),您需要提供空值:
select y.userid,
count(distinct case when w.keyobject ='UPMFolder' then w.processno end) as NumFolder,
count(distinct case when w.keyobject ='UPMPayrollMember' then w.processno end) as NumPayrollMember
from upmfolder f, upmperson p, w2process w, w2processcheck y
where f.personid = p.personid and
f.folderid = w.keynumb and
w.Processno = y.processid
group by y.userid
注意:您还应该学习现代
join
语法。我没有更改查询,但是连接条件实际上应该在on
子句中,而不是where
子句中。这不取决于您希望作为一个整体计算的内容吗?我的意思是,您希望如何处理满足这两个查询的流程?算一次?两次?我只数了一次