如何使用NULL值分组

时间:2018-08-08 17:51:42

标签: sql-server tsql group-by sql-server-2012

当NULL值分组时最简单的方法是什么?

b.groups()

结果如下:

enter image description here

您会看到名称'Robert'的值为NULL。 我该如何对溢价($ 400)和只有一行没有NULL承保范围的值求和?

但是我需要使它看起来像这样:

enter image description here

在这种情况下,我无法使用MAX()函数。

1 个答案:

答案 0 :(得分:1)

此解决方案假定NULL将被分组为NOT NULL中一个“随机” ID/Name值。如果可以使用多个值,则此查询在两次执行之间不会返回稳定的结果集:

select ID, 
        Name, 
        ISNULL(m1.Coverage, sub.Coverage) AS Coverage,
        sum(Premium) as Premium
FROM  @MyTable m1
cross apply (SELECT TOP 1 m2.Coverage FROM @MyTable m2 WHERE Coverage IS NOT NULL 
             AND m1.ID = m2.ID AND m1.Name = m2.Name) sub
group by ID
        ,Name   
        ,ISNULL(m1.Coverage, sub.Coverage);

Rextester Demo