SQL Group by不显示所有变量
我正在从MSSQL数据库中获取一个列表。我有一个系统列表和数据库表中的材料。我想从日期范围中获取摘要。但数据库只给我非空的行。这是我的密码SQL Group by不显示所有变量,sql,sql-server,group-by,Sql,Sql Server,Group By,我正在从MSSQL数据库中获取一个列表。我有一个系统列表和数据库表中的材料。我想从日期范围中获取摘要。但数据库只给我非空的行。这是我的密码 select system_no AS 'SYSTEM NAME', SUM(CASE WHEN (mat_2='AS') THEN mat_2_size END) as 'AS', SUM(CASE WHEN (mat_2='SS') THEN mat_2_size END) as 'SS', SUM(CASE
select system_no AS 'SYSTEM NAME',
SUM(CASE WHEN (mat_2='AS') THEN mat_2_size END) as 'AS',
SUM(CASE WHEN (mat_2='SS') THEN mat_2_size END) as 'SS',
SUM(CASE WHEN (mat_2='CS') THEN mat_2_size END) as 'CS'
from fabrication_table
where welding_date between '2014-02-03' and '2014-02-09'
group by system_no
UNION
select 'TOTAL' as 'SYSTEM NAME',
SUM(CASE WHEN (mat_2='AS') THEN mat_2_size END) as 'AS',
SUM(CASE WHEN (mat_2='SS') THEN mat_2_size END) as 'SS',
SUM(CASE WHEN (mat_2='CS') THEN mat_2_size END) as 'CS'
from fabrication_table
where welding_date between '2014-02-03' and '2014-02-09'
此查询的结果如下所示
SYSTEM NAME AS SS CS
Auxiliary steam NULL NULL 6.75
Chemical dosing NULL 10.00 NULL
Closed cooling water NULL 1.50 193.75
Condensate NULL NULL 32.00
Demineralized water NULL 34.00 NULL
Feedwater NULL NULL 6.00
Gases (N2, H2, CO2) NULL NULL 385.25
GT air intake anti-icing NULL NULL 220.50
Main steam & by-pass 49.50 NULL 84.00
Seawater intake NULL 27.50 NULL
ST drains 37.50 NULL 175.50
ST seals steam NULL 2.25 175.00
TOTAL 87.00 75.25 1278.75
但我的系统名称列表是:
Potable water
Service water
Seawater intake
Chemical dosing
Closed cooling water
GT interconnections
Feedwater
HRSG blowdown
Sampling
Fire fighting
GT Lube Oil
Auxiliary steam
Desalted water
Demineralized water
ST lube & seal oil
Main steam & by-pass
ST drains
GT air intake anti-icing
Condenser vacuum
ST seals steam
Condensate
Plant drainage
Filtered water
Compressed air
GT drainage
Fuel gas
Gases (N2, H2, CO2)
这里是我的问题:我想列出所有变量,例如,查询没有列出消防,但我想像这样列出消防
Fire Fighting NULL NULL NULL
默认情况下,空值从聚合中切断 尝试使用合并避免值为零:
,SUM(CASE WHEN (mat_2='AS') THEN mat_2_size END) as 'AS'
更改:
,SUM(CASE WHEN (mat_2='AS') THEN coalesce(mat_2_size,0) END) as 'AS'
我用这个代码块解决了我的问题
SELECT ISNULL(column,0) FROM...
它可以帮助我显示空变量我在表中手动检查消防,并用您选择的每个选项的where条件进行验证。iiIremove union and use union all1你是为你所有的[mat_2_size]事件合并还是仅仅为了我在上面的例子中添加的合并?2该日期范围内的特定[system_no]至少有一行为空或不为空?顺便说一句,该联合只是为结果集添加汇总总数。为了查询的简单性和数据库性能,我通常让它在UI层完成。与问题相比,这个答案是不完整的。