Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL查询中同时使用计数和并集_Sql_Union_Union All - Fatal编程技术网

在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

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

如何将这两个查询组合成一个查询?因此,计数和组仍能正常工作。我尝试了使用
联合所有
,但是没有成功。我需要做什么?

您可以通过条件聚合来完成。对于计数(不同),您需要提供空值:

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

这不取决于您希望作为一个整体计算的内容吗?我的意思是,您希望如何处理满足这两个查询的流程?算一次?两次?我只数了一次