【发布时间】:2013-06-29 23:15:18
【问题描述】:
考虑下面的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(如果有的话)之外的其他东西。
【问题讨论】:
标签: oracle