0
我有一个结果集,主要由值的列组成。但是,最左边的列包含我用来有效标记每行的文本。当我ROLLUP,价值总,这是伟大的。我'No KS2'列中的文本会变成预期的NULL。有什么我可以做的,用文本替换NULL例如'总'?SQL是否可以替换汇总中的值?
其他列中的所有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列结果集使用我已经用'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语句,用'No KS2'取代了我的KS2列中的NULL值。
是的,沿着正确的路线。但是,我已经有了一个case语句,用'No KS2'替代了KS2列中的NULL值。我将发布我的GROUP BY代码。 – Matt
用圆括号括起整个区域,并创建一个替代NULL的select语句。选择* FROM(<您的完整查询>)数据 – twoleggedhorse
关于您的编辑。它**是**重复的。替换'ROLLUP'值的正确方法是使用'GROUPING'功能。使用'ISNULL'或'COALESCE'会错误地将总标签应用于分组值为'NULL'的组。由于您没有提供SQL小提琴,所以我不打扰您向您展示如何将'GROUPING'应用于您的情况(代码太长以至于无法评论,我当然对从头开始设置小提琴没有兴趣) –