SQL是否可以替换Rollup中的值?

时间:2013-10-10 09:18:11

标签: sql sql-server-2008 null group-by rollup

我有一个主要由值列组成的结果集。但是,最左边的列包含我用来有效标记每一行的文本。当我ROLLUP,值总计,这是伟大的。我的'No KS2'列中的文本汇总为NULL,这是预期的。有什么我可以用文本替换NULL,例如'Total'?

其他列中的所有NULL都应该在那里,我不需要替换它们。

以下是我的结果集的示例,例如:

No KS2    6c/D-    6b/D     6a/D+
2a        1        NULL     NULL     
3c        3        NULL     NULL     
3b        NULL     5        NULL
3a        NULL     NULL     6
NULL      4        5        6

这是我想做的事情:

No KS2    6c/D-    6b/D     6a/D+
2a        1        NULL     NULL     
3c        3        NULL     NULL     
3b        NULL     5        NULL
3a        NULL     NULL     6
Total     4        5        6

编辑:

生成KS2列时,使用I的组结果集已经用'No KS2'替换NULL值。请参阅下面的GROUP BY代码:

GROUP BY
       CASE Name
            WHEN 'English' THEN
                CASE WHEN [Ks2en] IS NULL OR [Ks2en]='' THEN
                    'No KS2'
                WHEN [Ks2en] IN ('1a','1b','1c') THEN 
                    '1'
                ELSE
                    [Ks2en]
                END
            WHEN 'Mathematics' THEN
                CASE WHEN [Ks2ma] IS NULL OR [Ks2ma]='' THEN
                    'No KS2'
                WHEN [Ks2ma] IN ('1a','1b','1c') THEN 
                    '1'
                ELSE
                    [Ks2ma]
                END
            ELSE
                CASE WHEN [Ks2av] IS NULL OR [Ks2av]='' THEN
                    'No KS2'
                WHEN [Ks2av] IN ('1a','1b','1c') THEN 
                    '1'
                ELSE
                    [Ks2av]
                END
            END 
            WITH ROLLUP

编辑:这不是重复,因为这个问题的解决方案应该是重复的并不能解决我的问题。我编辑了代码来解释差异。我已经有一个case语句,用KS2列中的'No KS2'替换我的NULL值。

1 个答案:

答案 0 :(得分:0)

事实证明这很简单。发布关于调查COALESCE()然后删除它的评论的用户发送了我正确的轨道。我为函数中的列包装了我的case语句,我的结果集显示了我想要的结果。无论你是谁,谢谢你。

SELECT 
       COALESCE(CASE Name
            WHEN 'English' THEN
                CASE WHEN                   
                [Ks2en] IS NULL OR [Ks2en]='' THEN
                    'No KS2'
                WHEN [Ks2en] IN ('1a','1b','1c') THEN
                    '1'
                ELSE
                    [Ks2en]
                END
            WHEN 'Mathematics' THEN
                CASE WHEN [Ks2ma] IS NULL OR [Ks2ma]='' THEN
                    'No KS2'
                WHEN [Ks2ma] IN ('1a','1b','1c') THEN
                    '1'
                ELSE
                    [Ks2ma]
                END
            ELSE
                CASE WHEN [Ks2av] IS NULL OR [Ks2av]='' THEN
                    'No KS2'
                WHEN [Ks2av] IN ('1a','1b','1c') THEN
                    '1'
                ELSE
                    [Ks2av]
                END
            END,'Total') AS KS2,...