日期:2014-05-18  浏览次数:20463 次

对order by的疑问
SQL code

ORDER BY 酒店,CASE WHEN 星期= '星期一' THEN 1
   WHEN 星期= '星期二' THEN 2
   WHEN 星期= '星期三' THEN 3
   WHEN 星期= '星期四' THEN 4
   WHEN 星期= '星期五' THEN 5
   WHEN 星期= '星期六' THEN 6
   WHEN 星期= '星期日' THEN 7
   WHEN 星期= '合计' THEN 8
   END,



这个是NBDBA回复某个朋友的帖子,我对order by这边排序的原理不太明白,谁给疏导一下哈哈~

------解决方案--------------------
这个ORDER BY,你把 CASE .... END 整个看做是一个 1到8 的整数就明白了. 

------解决方案--------------------
case when...放在select 后面看显示就用了

这是转换当 星期 列= '星期一' 转为1。。。。。。
------解决方案--------------------
ORDER BY 酒店,数字 (1~8)

就是让星期1,2按照顺序排列 ,最后是合计 。
------解决方案--------------------
探讨

SQL code

CASE WHEN 星期= '星期一' THEN 1
WHEN 星期= '星期二' THEN 2
WHEN 星期= '星期三' THEN 3
WHEN 星期= '星期四' THEN 4
WHEN 星期= '星期五' THEN 5
WHEN 星期= '星期六' THEN 6
WHEN 星期= '星期日' THEN 7
WHEN 星期=……

------解决方案--------------------
SQL code

--其实有时间字段的话你可以直接
ORDER BY 酒店,datepart(weekday,时间字段)

------解决方案--------------------
其实可以理解为按照THRN后面的来排前面的序