LEFT OUTER JOIN
DISTINCT
состояния (для каждой страны) для ресурсов, а затем GROUP BY
каждого состояния и COUNT
количества ресурсов.
Oracle Настройка :
CREATE TABLE state_counties ( State, Countyid, CountyName ) AS
SELECT 'KY', 101, 'Jefferson' FROM DUAL UNION ALL
SELECT 'KY', 102, 'Clark' FROM DUAL UNION ALL
SELECT 'KY', 103, 'Henderson' FROM DUAL UNION ALL
SELECT 'IN', 501, 'Albany' FROM DUAL UNION ALL
SELECT 'ON', 601, 'Franklin' FROM DUAL;
CREATE TABLE state_resources (PK_Rescid, state, Nationwide ) AS
SELECT 64892, 'KY', 'Y' FROM DUAL UNION ALL
SELECT 64857, 'ON', 'N' FROM DUAL UNION ALL
SELECT 58745, 'ON', 'N' FROM DUAL
Запрос :
SELECT s.state,
COUNT(r.pk_rescid)
FROM ( SELECT DISTINCT state FROM state_counties ) s
LEFT OUTER JOIN
state_resources r
ON ( r.nationwide = 'Y' OR s.state = r.state )
GROUP BY s.state;
Выход :
STATE | COUNT(R.PK_RESCID)
:---- | -----------------:
ON | 3
IN | 1
KY | 1
дБ <> скрипка здесь