检查GROUP BY中原始数据中的任何项是否为空

时间:2017-10-27 13:39:05

标签: sql tsql group-by

在T-SQL中是否有办法检查组原始数据中的任何元素是否为空,如果是,则不返回这样的组?我一直在寻找SELECT和HAVING子句的解决方案。

All子句中的All()和Any()都不起作用。在HAVING我无法过滤,因为没有这样的值。

代码示例:

SELECT fl.Id, fl.Number, ALL(sr.MP_Id IS NOT NULL) <--- ALL does not work
FROM NumberOfChildrenCTE AS noc
    INNER JOIN [DDF].[dbo].[FL] AS fl ON noc.FLId = fl.Id
    INNER JOIN [DDF].[dbo].[FM] AS fm ON fl.Id = fm.FLId AND fm.IsActive = 1 
AND fm.IsFinished = 1
    INNER JOIN [DDF].[dbo].[S] AS s ON fm.Id = s.Id AND s.IsFinished = 1
    INNER JOIN [DDF].[dbo].[SR] AS sr ON s.Id = sr.St_Id
GROUP BY fl.Id, fl.Number
HAVING ALL(sr.MP_Id IS NOT NULL) <--- ALL does not work either

1 个答案:

答案 0 :(得分:4)

您可以使用COUNT()进行检查。如果没有NULL,那么这是真的:

HAVING COUNT(*) = COUNT(sr.MP_Id)