我想选择一堆在大多数情况下都是唯一的记录,但是有一些记录会发生两次。我希望只能选择具有最新日期的记录。到目前为止,这是我的查询:
SELECT tb1.id,tb1.type,tb1.date FROM Table tb1 WHERE tb1.type = 'A' OR 'B' AND tb1.date = (SELECT TOP 1 tb2.date FROM Table tb2 WHERE tb2.date = tb1.date ORDER BY tb2.date DESC)
就检索具有重复项的记录的最新记录而言,这是可行的,但是那些没有重复项的记录根本不会出现。
感谢您的帮助,如果我错过了一些显而易见的事情,我深表歉意。我是SQL游戏的新手。
有几种方法可以执行此操作,一种方法是像这样使用ROW_NUMBER:
SELECT id, type, date FROM ( SELECT tb1.id, tb1.type, tb1.Date, ROW_NUMBER() OVER (PARTITION BY tb1.id ORDER BY tb1.Date DESC) AS RowNo FROM Table tb1 WHERE tb1.type IN ('A','B') ) x WHERE x.RowNo = 1
这将返回具有最新日期的 每个不同ID 值的行。