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