請考慮以下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