2

多数の日時エントリを含むテーブルがあります。日付の降順で並べられた個別のMONTHYEAR文字列のリストを選択したいと思います。たとえば、私は見たい

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.

私はもうすぐそこにいるように感じますが、この構文を正しく取得できません。SQLServer2012を使用しています-ありがとう

4

3 に答える 3

3

試す;

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
于 2012-12-17T13:46:04.830 に答える
0

ORDER BY 行のすべてが SELECT にも含まれていることを確認する必要があります。

于 2012-12-17T13:43:03.397 に答える
0

代わりにこれを試してください:

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

SQL フィドルのデモ

于 2012-12-17T13:47:12.540 に答える