Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Group by不显示所有变量_Sql_Sql Server_Group By - Fatal编程技术网

SQL Group by不显示所有变量

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

我正在从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 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层完成。与问题相比,这个答案是不完整的。