【问题标题】:SELECT DISTINCT on datetime在日期时间选择 DISTINCT
【发布时间】:2011-06-06 15:43:35
【问题描述】:

我需要从 SQLServer 2005 表中以 MMM YYYY 格式显示名为 datetimestamp 的日期时间字段的不同值。我还需要按时间顺序对它们进行排序。

到目前为止,我有这个:

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

由于转换,“order by”当然会按字母顺序对其进行排序。

 Apr 2009 
 Dec 2009 
 Feb 2009

如何让它按时间顺序排序?

Feb 2009
Apr 2009
Dec 2009

谢谢。

【问题讨论】:

    标签: datetime select distinct


    【解决方案1】:

    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)
    

    【讨论】:

    • 感谢@Fosco。试过你的建议。然而,这违反了 SELECT DISTINCT 规则。这是错误:如果指定了 SELECT DISTINCT,则 ORDER BY 项目必须出现在选择列表中。
    • @VVM 啊,是的......用其他东西更新了答案供您尝试。
    • 再次感谢。也试过这个,但得到了foll。错误:ORDER BY 子句在视图、内联函数、派生表和子查询中无效,除非还指定了 TOP 或 FOR XML。虚拟机
    • @VVM 该死的......我今天犯了愚蠢的错误......看起来你需要拉不止一列。
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      相关资源
      最近更新 更多