我正在尝试在进行内部联接后找到一个组的最新记录。
说我有以下两个表:
dateCreated | id
2011-12-27 | 1
2011-12-15 | 2
2011-12-17 | 6
2011-12-26 | 15
2011-12-15 | 18
2011-12-07 | 22
2011-12-09 | 23
2011-12-27 | 24
code | id
EFG | 1
ABC | 2
BCD | 6
BCD | 15
ABC | 18
BCD | 22
EFG | 23
EFG | 24
我想只显示最新的分组:
结果将是:
dateCreated | code
2011-12-27 | EFG
2011-12-15 | ABC
2011-12-26 | BCD
我知道这可以使用max
和group by
函数来实现,但我似乎无法获得所需的结果。
答案 0 :(得分:3)
我认为这应该会让你到那里:
select max(a.dateCreated) as dateCreated
, b.code
from table1 a
join table2 b on a.id = b.id
group by b.code
答案 1 :(得分:0)
假设您的表名为a
和b
,请尝试以下操作:
select max(a.dateCreated) as dateCreated, b.code
from a join b on a.id = b.id
group by b.code
答案 2 :(得分:0)
您可以使用分析功能。这样,您仍然只为每个代码选择一个结果,即使它们是两个具有相同的最后一个dateCreated
(这可能是您实际想要的结果也可能不是这样)
SELECT Code, dateCreated
FROM ( SELECT T2.Code, T1.dateCreated, ROW_NUMBER() OVER(PARTITION BY T2.Code ORDER BY T1.dateCreated DESC) Corr
FROM Table1 T1
INNER JOIN Table2 T2
ON T1.id = T2.id) A
WHERE Corr = 1