0

我有一个主要由值列组成的结果集。但是,最左边的列包含我用来有效标记每一行的文本。当我 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

编辑:

使用 group by 生成 KS2 列结果集时,我已经将 NULL 值替换为“No KS2”。请在下面查看我的 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 语句,用“No KS2”替换了 KS2 列中的 NULL 值。

4

1 回答 1

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,...
于 2013-10-10T10:33:39.080 回答