0

私は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 値が表示されていません。

4

1 に答える 1