获取SQL Server查询返回零记录而不是单个空记录聚合无组记录?

时间:2017-09-20 15:13:47

标签: sql sql-server entity-framework aggregate

如果组聚合导致零记录而不是具有空值和0的单个记录,SQL Server是否有办法不返回任何记录?

问题SQL语句:

select  
    Max(InterfaceID), Count(*)
from 
    (select InterfaceID 
     from interface 
     where interfaceid = 99) as Interfaces

问题结果

+-------+---------+
| i_max | i_count |
+-------+---------+
| NULL  |       0 |
+-------+---------+

如果指定了分组的示例

select  
    Max(InterfaceID), Count(*)
from 
    (select InterfaceID 
     from interface 
     where interfaceid = 99) as Interfaces
group by 
    interfaceid 

结果:

+-------+---------+
| i_max | i_count |
+-------+---------+

你能用第一个查询得到第二个结果,没有指定任何一个组吗?

这都是因为Entity Framework模型和数据处理空数组而不是数组1记录,但用处不大。

2 个答案:

答案 0 :(得分:2)

你可以修改你的查询,如 -

select  Max(InterfaceID), Count(*)
from (
  select InterfaceID from interface where interfaceid=99
) as Interfaces
having  Max(InterfaceID) is not null

答案 1 :(得分:0)

作为HAVING的替代方法,您还可以添加GROUP BY () - 如果输入中没有匹配的行,则下面将返回0行,否则单行结果会聚合输入中的所有行

SELECT   MAX(InterfaceID),
         COUNT(*)
FROM     (SELECT InterfaceID
                 FROM    interface
                 WHERE   interfaceid = 99) AS Interfaces
GROUP BY ()