有了上面的寄存器,我该如何获取具有最近日期的代码(考虑到前三个代码相同), 并仍然显示其他结果?
id | agency | code | date
1 | 11111 | 12345 | 2018-09-25 00:01:10.000
2 | 11111 | 12345 | 2018-09-25 00:01:20.000
3 | 11111 | 12345 | 2018-09-25 00:01:30.000
4 | 22222 | 23456 | 2018-09-25 00:02:00.000
7 | 33333 | 54321 | 2018-09-25 00:02:10.000
我想拥有的是:
id | agency | code | date
3 | 11111 | 12345 | 2018-09-25 00:01:30.000
4 | 22222 | 23456 | 2018-09-25 00:02:00.000
7 | 33333 | 54321 | 2018-09-25 00:02:10.000
在此先感谢您提供进一步的帮助!
答案 0 :(得分:0)
请考虑“过滤”。在这种情况下,使用相关子查询:
select t.*
from t
where t.date = (select max(t2.date) from t t2 where t2.agency = t.agency);
答案 1 :(得分:0)
您有两种情况要处理。
(1)从youTable获取每个代理商的最长日期。这可以通过使用聚合函数(max())并按代理分组来完成。
(2)从yourTable中选择所有记录,并与(1)的结果进行内部联接。
select t1.id, t1.agency,t1.code,t1.date from yourTable t1 inner join ( --only most recent of each agency select max(date) date,agency from yourTable group by agency ) t2 on t1.[date]=t2.[date] and t1.agency=t2.agency
答案 2 :(得分:0)
使用ROW_NUMBER值
这将为您提供帮助。
您可以通过不同的列获取每一行的ROW_NUMBER值。 按日期列的顺序进行设置。
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY AGENCY, CODE ORDER BY date_column) AS ROW_NUMBER
FROM table_name
) AS ROWS
WHERE ROW_NUMBER = 1