【问题标题】:Select Distinct formatted dates in SQL在 SQL 中选择不同格式的日期
【发布时间】:2012-12-17 23:18:58
【问题描述】:

我有一张包含大量日期时间条目的表格。我想选择按日期降序排列的不同 MONTH YEAR 字符串的列表。比如我想看

October 2012
September 2012
June 2012
July 2011

查询需要是不同的,因为每个月/天都有多个条目。

这就是我所拥有的

SELECT  DISTINCT YEAR(DateRequested), datename(MONTH,[DateRequested])
FROM    [dbo].[MyDateData]
ORDER BY YEAR(DateRequested), MONTH([DateRequested])

但我收到此错误:

ORDER BY items must appear in the select list if SELECT DISTINCT is specified.

感觉就像我快到了,但无法正确使用此语法。我正在使用 SQL Server 2012 - 谢谢

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    试试;

    SELECT monthYear FROM (
    SELECT DISTINCT DATENAME(month,dateCol) + ' ' + 
                    CONVERT(VARCHAR, DATEPART(year,dateCol)) monthYear, 
                    CONVERT(varchar(6),dateCol, 112) orderCol
    FROM yourTable ) A
    ORDER BY CONVERT(INT,orderCol) desc
    

    【讨论】:

      【解决方案2】:

      您只需要确保 ORDER BY 行中的所有内容也在您的 SELECT 中。

      【讨论】:

        【解决方案3】:

        试试这个:

        ;WITH CTE
        AS
        (
          SELECT  DISTINCT 
             YEAR(DateRequested) "Year",
             DATENAME(MONTH,[DateRequested]) "Month"
          FROM YourDateTable
        ) 
        SELECT * 
        FROM CTE 
        ORDER BY "Year", "Month"
        

        SQL Fiddle Demo

        【讨论】:

          猜你喜欢
          • 2015-01-25
          • 1970-01-01
          • 2014-11-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多