2017-04-19 12 views

答えて

2

次のクエリを変更してみてください。 IN句内のSELECTステートメントは、外部クエリが返される日付を選択します。

SELECT * 
FROM myTable 
WHERE DateColumn IN 
(
    SELECT MAX(DateColumn) 
    FROM myTable 
    GROUP BY YEAR(Datecolumn), MONTH(DateColumn) 
) 
+0

美しい、ありがとう! –

0

あなたは、レコードのYourDateColumnフィールドは月YourDateColumnの最後の日が属する等しいあなたのテーブルから選択する必要があります。

SELECT CAST(DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0, YourDateColumn)+1,0)) AS DATE) 
0

がクエリ以下を利用するようにしてみてください。

DECLARE @Dates Table (ID INT, dt DATE) 
    INSERT INTO @Dates VALUES 
    (1,'2017-02-01'), 
    (2,'2017-02-03'), 
    (3,'2017-02-04'), 
    (4,'2017-03-03'), 
    (5,'2017-04-03'), 
    (6,'2017-04-04') 

    SELECT MAX(dt) AS LastDay FROM @Dates GROUP BY DATEPART(MONTH,dt) 

OUTPUT

LastDay 
2017-02-04 
2017-03-03 
2017-04-04 

OR

SELECT DATEPART(MONTH,dt) AS [MONTH],MAX(DATEPART(DAY,dt)) AS LastDay FROM @Dates GROUP BY DATEPART(MONTH,dt) 

MONTH LastDay 
    2 4 
    3 3 
    4 4 
+0

行に日付値のみが含まれている場合は、これが機能します。私のケースでは、各行には日付だけでなく列も追加されます。だから私はクエリとグループでそれらの列のいずれかを含めると、私は月の毎日の行を得ることになります。 –

関連する問題