2011-06-06 51 views
0

我需要以MMM YYYY格式從SQLServer 2005表中顯示一個名爲datetimestamp的日期時間字段的不同值。我也需要按照時間順序對它們進行排序。datetime上的SELECT DISTINCT

到目前爲止,我有這樣的:

Select distinct CONVERT(CHAR(4), datetimestamp, 100) + CONVERT(CHAR(4), datetimestamp, 120) as MonthYear from TableName order by MonthYear 

當然排序它字母順序,由於轉換的「排序依據」。

Apr 2009 
Dec 2009 
Feb 2009 

如何讓它按時間順序排序?

Feb 2009 
Apr 2009 
Dec 2009 

謝謝。

回答

3

edit2:它看起來像你需要拉回多個列。這隻使用以前嘗試的子查詢:

select distinct DATEPART(year,datetimestamp) as year, 
      DATEPART(month,datetimestamp) as month, 
      CONVERT(CHAR(4), datetimestamp, 100) 
      + CONVERT(CHAR(4), datetimestamp, 120) as MonthYear 
    from TableName order by DATEPART(year,datetimestamp), 
          DATEPART(month,datetimestamp) 
+0

Thanks @Fosco。嘗試了你的建議。然而這破壞了一個SELECT DISTINCT規則。以下是錯誤:如果指定了SELECT DISTINCT,則ORDER BY項目必須出現在選擇列表中。 – VVM 2011-06-06 16:42:06

+0

@VVM啊是的......用別的東西更新了答案,供您嘗試。 – Fosco 2011-06-06 17:10:08

+0

再次感謝。嘗試過這一個,但也得到了結論。錯誤:ORDER BY子句在視圖,內聯函數,派生表和子查詢中無效,除非還指定了TOP或FOR XML。 VVM – VVM 2011-06-06 17:29:48