2011-07-09 58 views
1

以下作品的獨特和秩序,但我想有它獨特的選擇辦法以及SQL幫助與日期

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 

我得到

消息145,級別15,狀態1,行1 如果指定了SELECT DISTINCT,則ORDER BY項目必須出現在選擇列表中。

我的目標是從日期時間字段中獲取所有不同的日期,並按降序對它們進行排序。

任何幫助將不勝感激。

回答

0

錯誤消息告訴你什麼是錯的。這是解決這個問題的一種方法:

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

這將修復錯誤信息,但會給出錯誤的數據。它會在dd/mm/yyyy字符串上排序,而不是基礎日期 – gbn

+0

感謝oded,但它不按降序對結果進行排序。 – wizzykidd

0

我認爲這將有助於你:

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

這將排序在dd/mm/yyyy字符串上,而不是基礎日期 – gbn

+0

datestart是什麼類型? – antonversal

1

單獨從排序是這樣的DISTINCT。

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

謝謝兄弟,我非常欣賞這一點,它的工作原理。 – wizzykidd

+0

@wizzykidd:請注意關於投票和接受答案的常見問題。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work如果這個答案最適合你,請用左邊的勾號接受。謝謝。 – gbn

0

使用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