考虑下面的语句,我从&表SELECT
中得到不同的计数,并得到我想要的结果。licensee
licensee_type
SELECT
licensee.license_type_id,
COUNT(*) AS count_all,
COUNT(CASE WHEN licensee.citizen = 'US' THEN 1 ELSE NULL END) AS count_a,
COUNT(CASE WHEN licensee.citizen = 'Other' AND licensee.flag = 'Y' THEN 1 ELSE NULL END) AS count_b,
COUNT(CASE WHEN licensee.flag = 'N' THEN 1 ELSE NULL END) AS count_c
FROM licensee
INNER JOIN license_type ON licensee.license_type_id = license_type.id
GROUP BY licensee.license_type_id;
场景:主表“licensee”根据“citizen”列分为两个表,分别是“licensee_us”和“licensee_other”。两个新表都没有“citizen”列。表'licensee_us'有来自'licensee'表(citizen ='US')的记录&类似地表'licensee_other'有来自'licensee'表(citizen ='Other')的记录&这两个表都有JOIN-ing列'license_type_id ' & 列'标志'。
现在,使用 license_type_id 分组的新两个表获得与上述 SELECT 查询相同的计数的有效方法是什么?让我知道是否需要任何澄清。我真的在寻找一种“有效”的方式来做到这一点。如果有的话,除了必须使用 UNION 之外的东西。