当我离开加入group by时,在左表中缺少记录

时间:2013-10-15 20:33:50

标签: sql-server left-join

我正在寻找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值。

1 个答案:

答案 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