2017-04-19 56 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

如果该行只包含日期值,则可以使用。对不起,不清楚,但在我的情况下,每行不仅有一个日期,而且还有额外的列。因此,只要我在查询和分组中包含这些列中的一列,我就会在每个月的每一天结束一行。 –

相关问题