[英]How to join multiple select statements in SQL and display in different colums
我编写了一个查询,该查询将两个表连接起来,显示总数no. of appointments
使用union
关键字no. of appointments
和leads
的查询,我希望此查询的结果显示在两个不同的列中,我对此有一个很难理解的描述
SELECT COUNT(FilteredAppointment.createdbyname) AS Appointment
FROM FilteredBusinessUnit
INNER JOIN FilteredSystemUser
ON FilteredBusinessUnit.businessunitid = FilteredSystemUser.businessunitid
INNER JOIN FilteredAppointment
ON FilteredSystemUser.systemuserid = FilteredAppointment.createdby
UNION
SELECT COUNT(FilteredLead.fullname) AS Lead
FROM FilteredBusinessUnit
INNER JOIN FilteredSystemUser
ON FilteredBusinessUnit.businessunitid = FilteredSystemUser.businessunitid
INNER JOIN FilteredLead
ON FilteredSystemUser.systemuserid = FilteredLead.createdby
WHERE (FilteredBusinessUnit.name IN (@Branch))
我想要的结果是:
CRITERIA | Appointment | Leads
Total | 200 | 123
联盟不是正确的方法。 Union合并或合并为具有相同数量的列和数据类型的结果集。 我会做这样的事情。
SELECT
( SELECT COUNT(FilteredAppointment.createdbyname)
FROM FilteredBusinessUnit INNER JOIN
FilteredSystemUser ON FilteredBusinessUnit.businessunitid = FilteredSystemUser.businessunitid INNER JOIN
FilteredAppointment ON FilteredSystemUser.systemuserid = FilteredAppointment.createdby
WHERE (FilteredBusinessUnit.name IN (@Branch))
) AS Appointment ,
( SELECT COUNT(FilteredLead.fullname)
FROM FilteredBusinessUnit INNER JOIN
FilteredSystemUser ON FilteredBusinessUnit.businessunitid = FilteredSystemUser.businessunitid INNER JOIN
FilteredLead ON FilteredSystemUser.systemuserid = FilteredLead.createdby
WHERE (FilteredBusinessUnit.name IN (@Branch))
) AS Lead
为了回应您的评论,以便能够将数字与其他分支进行比较,我会尝试类似的方法。
SELECT FilteredBusinessUnit.name ,
SUM(CASE WHEN FilteredAppointment.createdbyname IS NOT NULL THEN 1 ELSE 0 END) AS Appointments,
SUM(CASE WHEN FilteredAppointment.fullname IS NOT NULL THEN 1 ELSE 0 END) AS Leads
FROM FilteredBusinessUnit
INNER JOIN FilteredSystemUser ON FilteredBusinessUnit.businessunitid = FilteredSystemUser.businessunitid
LEFT OUTER JOIN FilteredAppointment ON FilteredSystemUser.systemuserid = FilteredAppointment.createdby
LEFT OUTER JOIN FilteredLead ON FilteredSystemUser.systemuserid = FilteredLead.createdby
WHERE (FilteredBusinessUnit.name IN (@Branch1, @Branch2))
GROUP BY FilteredBusinessUnit.name
如果要查看所有分支,可以忽略where子句。
通过cross join
而不是union
执行此操作:
select 'Total', Appointment, Leads
from (SELECT COUNT(FilteredAppointment.createdbyname) AS Appointment
FROM FilteredBusinessUnit INNER JOIN
FilteredSystemUser ON FilteredBusinessUnit.businessunitid = FilteredSystemUser.businessunitid INNER JOIN
FilteredAppointment ON FilteredSystemUser.systemuserid = FilteredAppointment.createdby
) c1 cross join
(SELECT COUNT(FilteredLead.fullname) AS Leads
FROM FilteredBusinessUnit INNER JOIN
FilteredSystemUser ON FilteredBusinessUnit.businessunitid = FilteredSystemUser.businessunitid INNER JOIN
FilteredLead ON FilteredSystemUser.systemuserid = FilteredLead.createdby
WHERE (FilteredBusinessUnit.name IN (@Branch))
) t
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.