我构建了一个返回表的查询:
| NAME | DATE |
| Item 1 | Date 1 |
| Item 1 | Date 2 |
| Item 1 | Date 3 |
| Item 2 | Date 1 |
| Item 2 | Date 2 |
| Item 3 | Date 1 |
| Item 3 | Date 2 |
| Item 3 | Date 3 |
| Item 3 | Date 4 |
基本上是一对多的分组。我想从这个结果集中过滤掉每个项目最早的日期行。含义,对于每个项目,删除具有最高日期的行(删除每个“项目”的“日期1”)。如何在删除“日期1”行的情况下返回此查询?
Ex输出:
| NAME | DATE |
| Item 1 | Date 2 |
| Item 1 | Date 3 |
| Item 2 | Date 2 |
| Item 3 | Date 1 |
| Item 3 | Date 3 |
| Item 3 | Date 4 |
答案 0 :(得分:4)
;WITH CTE AS
(
SELECT *,
RN = ROW_NUMBER() OVER(PARTITION BY Name ORDER BY [Date])
FROM (...Your query here...) T
)
SELECT *
FROM CTE
WHERE RN > 1;