2011-06-06 66 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