私は14行を探していますが、ここでは13行しか取得できません。
左側のテーブルに 7 つの AGENCY_CODE があり、右側のテーブルに各 PROJECT_TYPE の行が必要です。これは簡単ですが、agency_codes の 1 つに 2 番目の (Mitigation) project_type のレコードがないことを除けば、それを表示する必要があるため、これを 2 つのテーブルに分割すると、それらは同じサイズになります。
select i.project_type,a.agency_code,
a.agency_desc,a.sort_order,
sum(case when i.status_code='DES' then 1 else 0 end) as 'Design',
sum(case when i.status_code='ONG' then 1 else 0 end) as 'Construction'
from agencyLookup a
left join sandy_imp_demographics i on substring(i.category,1,1)=a.agency_code
group by i.projecT_type,a.agency_code,a.agency_desc,a.sort_order
Agency_code G の軽減策がないことがわかります。
project_type agency_code
Mitigation D
Mitigation L
Mitigation M
Mitigation S
Mitigation T
Mitigation U
Recovery D
Recovery G
Recovery L
Recovery M
Recovery S
Recovery T
Recovery U
では、agency_code G の null/0 行を取得するために何が欠けているのでしょうか?
編集:これについてさらに考えてみると、これは左結合の問題ではなく、グループごとです。追加情報を取得するために Agency_desc に参加していますが、実際のグループ フィールドが問題です。
select substring(i.category,1,1),i.project_type
from sandy_imp_demographics i
group by substring(i.category,1,1),i.project_type
グループ A には機関コードがあり、そのうち 7 つがありますが、そのうちの 1 つには Mitigation project_type がありません。最終的にプルする値にヌルを使用して、とにかく表示するにはどうすればよいですか?
編集: グループ化なしのテーブルのサンプル
(No column name) project_type
D Mitigation
D Mitigation
D Mitigation
G Recovery
G Recovery
G Recovery
G Recovery
L Mitigation
L Mitigation
L Recovery
最初の列の G 値が表示されていません。