除其他字段外,我还有一个带有INT ID和DATETIME日期的表。每个工作日(不保证)在此表中插入行,并且其他几个表也将此ID用作外键。

我的问题是,如何获取每个月的最大日期的ID,然后可以将其用于加入其他数据表?例如,如果该流程今天运行,我希望查看1月31日,2月28日,...,10月31日,11月23日的数据。

我正在使用SQL Server 2005。

最佳答案

CREATE TABLE #foo (id INT, d DATETIME);

INSERT #foo(id,d) SELECT 1, '20091101'
UNION ALL SELECT 2, '20091102'
UNION ALL SELECT 3, '20091006'
UNION ALL SELECT 4, '20091001'
UNION ALL SELECT 5, '20091002'
UNION ALL SELECT 6, '20090904';

SELECT d, id
FROM
(
  SELECT d, id, rn = ROW_NUMBER() OVER
  (PARTITION BY DATEDIFF(MONTH, '20000101', d)
   ORDER BY d DESC)
  FROM #foo
) AS x
WHERE x.rn = 1
ORDER BY x.d;

DROP TABLE #foo;

关于sql - SQL获取数据集中每个月的最大日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1786564/

10-11 01:55
查看更多