请考虑以下SELECT
声明,其中我从licensee
& licensee_type
表中得到不同的计数,并获得我想要的结果。Oracle Select语句计算两个表的计数
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_us”和基于列“公民” licensee_other“。新表格都没有“公民”栏。表'licencee_us'具有来自'被许可人'表(公民='美国')的记录&类似的表'许可证人'具有来自'被许可人'表(公民='其他')的记录&两个表都具有联合列'license_type_id '&列'标志'。
现在,什么是有效的方式来获得与上述SELECT查询相同的计数与新的两个表GROUP_ed由license_type_id?如果需要澄清,请告诉我。我真的正在寻找一种“高效”的方式来做到这一点。除了必须使用UNION之外的其他东西,如果有的话。
改变表结构是超出我的控制范围或这个问题的范围。 UNION ALL是我认为也是由于某种原因,我不觉得它是最有效的方式。对不起,我应该在我原来的问题中提到这一点。 – Bala
您需要真正尝试各种解决方案,但我只是为了解决不断变化的表格结构,并在需要时处理性能/效率问题。你真的希望统计两个表的联合,所以这不是一个不合理的方法。 – LoztInSpace