【发布时间】:2013-10-09 03:46:53
【问题描述】:
我有一个 ORDER BY 子句,它对一组分组值的结果集进行排序。
我希望 ORDER By 做的是导致 No KS2 行位于顶部。
这些值是有条件地从三个不同的列填充的,但这些值来自所有三个列的同一集合。
值为null,长度为零的字符串,1c, 1b, 1a, 2c, 2b, 2a, 3c.... 5a, 6c, 6b, 6a
目前,我的 ORDER BY 子句通过基于值左侧和值 DESC 右侧的排序来显示值。
示例结果集将是:
2a
3c
3b
4c
4b
4a
5c
5b
No KS2
这是我想要的示例:
No KS2
2a
3c
3b
4c
4b
4a
5c
5b
我目前的代码在这里:
ORDER BY
LEFT(
CASE Name
WHEN 'English' THEN
CASE WHEN [Ks2en]=NULL OR [Ks2en]='' THEN
'No KS2'
ELSE
[Ks2en]
END
WHEN 'Mathematics' THEN
CASE WHEN [Ks2ma]=NULL OR [Ks2ma]='' THEN
'No KS2'
ELSE
[Ks2ma]
END
ELSE
CASE WHEN [Ks2av]=NULL OR [Ks2av]='' THEN
'No KS2'
ELSE
[Ks2av]
END
END,1),
RIGHT(
CASE Name
WHEN 'English' THEN
CASE WHEN [Ks2en]=NULL OR [Ks2en]='' THEN
'No KS2'
ELSE
[Ks2en]
END
WHEN 'Mathematics' THEN
CASE WHEN [Ks2ma]=NULL OR [Ks2ma]='' THEN
'No KS2'
ELSE
[Ks2ma]
END
ELSE
CASE WHEN [Ks2av]=NULL OR [Ks2av]='' THEN
'No KS2'
ELSE
[Ks2av]
END
END,1) DESC
【问题讨论】:
-
那么,那里有问题吗?
-
No KS2是什么意思? -
stackoverflow.com/questions/1250156/… -> 这应该会给你一些想法
-
抱歉,伙计们,已经养成了从问题开始的习惯,而不是在我写帖子时从哪里开始。你会在大约一半的时候发现它,但是到那时你可能已经睡着了。修改答案以适应。
-
@dognose 让最终用户看到“No KS2”而不是空行更有意义。我所说的价值观是学生在小学结束时获得的成绩,小学的课程被称为关键阶段 2。
标签: sql sql-server-2008 sql-order-by