1

我有两个 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 ='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

我如何将两者组合成一个查询?所以计数和组仍然可以正常工作。我试过了union all,但这没有用。我需要做什么?

4

1 回答 1

0

您可以使用条件聚合来做到这一点。对于 acount(distinct)你需要提供一个 NULL 值:

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子句中。

于 2013-05-24T10:41:16.480 回答