我正在写一个查询,并在
this thread中使用了这个解决方案,但它有一些工作,但我仍然有点麻烦.
我想选择一大堆唯一的记录,但有一些记录发生两次.我想只能选择具有最新日期的记录.这是我的查询到目前为止
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.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
这将返回具有最新Date的每个不同id值的行.