SQL帮助与不同和按日期排序

时间:2011-07-09 18:19:40

标签: sql datetime sql-order-by distinct

以下效果很好,但我想在其中也有明确的选项

select  convert(nvarchar(10),datestart,103) 
from o_course
order by  convert(datetime, datestart, 103) desc

但如果我将其更改为

select  distinct convert(nvarchar(10),datestart,103) 
from o_course
order by  convert(datetime, datestart, 103) desc

我得到了

  

Msg 145,Level 15,State 1,Line 1   如果指定了SELECT DISTINCT,则ORDER BY项必须出现在选择列表中。

我的目标是从日期时间字段中获取所有不同的日期,并将它们降序排序。

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

将DISTINCT与此类别分开。

select 
    convert(nvarchar(10), foo.datestart, 103) 
from 
    (SELECT DISTINCT datestart FROM o_course) foo
order by 
    foo.datestart DESC

答案 1 :(得分:1)

使用GROUP BY而不是distinct。

select convert(nvarchar(10),datestart,103) 
from o_course
group by convert(nvarchar(10),datestart,103) 
order by convert(datetime, datestart, 103) desc

答案 2 :(得分:0)

错误消息告诉您出了什么问题。这是修复它的一种方法:

select  distinct convert(nvarchar(10),datestart,103) 
from o_course
order by  convert(nvarchar(10), datestart, 103) desc

答案 3 :(得分:0)

我认为这会对你有所帮助:

select somedate from (select  distinct convert(nvarchar(10),datestart,103) as somedate  
from o_course) t order by somedate desc