2016-11-14 37 views
0

我有一个表在SQL正常工作服务器2014称为T_Hours与如列:SQL:由ASC订单/递减不是多列

Day  Open   Close   Modified_Date 
Mon  17:00:00  20:00:00  12/05/2015 
Mon  09:00:00  11:00:00  12/05/2015 
Tues  17:00:00  20:00:00  10/27/2015 
Tues  09:00:00  11:00:00  10/26/2015 
Wed  17:00:00  20:00:00  10/22/2015 
Wed  09:00:00  11:00:00  10/20/2015 

我试图通过Modified_Date desc订购和Day, Open, Close asc从而使出现表所示:

Day  Open   Close   Modified_Date 
Mon  09:00:00  20:00:00  12/05/2015 
Mon  17:00:00  11:00:00  12/05/2015 
Tues  09:00:00  20:00:00  10/27/2015 
Tues  17:00:00  11:00:00  10/26/2015 
Wed  09:00:00  20:00:00  10/22/2015 
Wed  17:00:00  11:00:00  10/20/2015 

我已经尝试过

order by `Modified_Date desc, Open asc, Close asc, Day asc` 

,但这只按照我想要的方式对Modified_Date而不是其他列进行排序。我在这里错过了什么吗?

+0

什么是这些列的数据类型(是modified_date日期时间,因此时间也被排序?)看来我的工作。首先引擎按'modified_date'排序......然后按'OPEN asc'排序。 'Close asc'在这里毫无意义,因为'Modified_Date'和'open'生成唯一的排序顺序。如果您在2015年12月5日在09:00和17:00结束时有另一条记录,那么它会在您当前的记录之前... – xQbert

+0

您正在考虑引用列而不是行。 ORDER By子句根据列中的数据对行进行排序。它不会重新排列行中的数据。除非你将行分开并重新组合,这是毫无意义的,你所要做的是不可能的。 –

+0

@xQbert modified_date是一个日期时间,以及打开/时间 – Hello

回答

0

你好@Hello(!无法抗拒),

看来,如果你把所有包含在单引号在您的订单中的元素by子句的 - 你尝试删除它周围的单引号?另外,打开,关闭和日期都是SQL中的保留字 - 你应该把它们放在方括号中。 您目前有:order by 'Modified_Date desc, Open asc, Close asc, Day asc' 尝试将其切换为:您当前有:order by Modified_Date desc, [Open] asc, [Close] asc, [Day] asc

祝您好运!