我正在寻找14行,而这里只有13行。
我在左表中有7个AGENCY_CODE,我想在右表中为每个PROJECT_TYPE添加一行。这很容易,除了没有其中一个agency_codes的第二个(缓解)project_type的记录,但我需要它显示,所以当我把它分成两个表时,它们的大小相同。
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
你会发现它缺少代理商代码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个,但其中一个没有代理商的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值。
答案 0 :(得分:0)
这是因为您的agregation正在使用LEFT JOIN中的表格列。您必须为空值添加一个案例。
select i.project_type,a.agency_code,
a.agency_desc,a.sort_order,
sum(case when i.status_code='DES' then 1 when i.status_code is null then 0 else 0 end) as 'Design',
sum(case when i.status_code='ONG' then 1 when i.status_code is null then 0 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