【发布时间】:2020-09-22 20:10:28
【问题描述】:
我还在学习 SQL。目前,我能够从分区和 row_number() 中获取行号
但是,我想不出一种方法来选择最高的 row_num 以便仅查看具有最新更新的记录。
最后我得到无效的列名。我为混乱的结构道歉,我打算把它清理得更好。
提前感谢你们的任何回答/提示。感谢您的宝贵时间。
编辑:最新的更新实际上是最高的row_num返回而不是1。我忘了指定。
FROM
(
SELECT
a.DELFLAG,
a.fname,
a.lname,
a.key1,
l.key2,
l.update,
ROW_NUMBER() OVER(PARTITION BY key1, key2 ORDER BY l.lupdate DESC) AS row_num
FROM dbo.t1 a
INNER JOIN dbo.t2 i ON i.key1 = a.key1
INNER JOIN dbo.t3 l ON l.key1 = i.key1
) AS K
WHERE
[row_num] = SELECT MAX([row_num]) AS latest)
AND
DELFLAG = 0
编辑 2:因为一条记录可以在同一天多次更新,但只有最后一行编号反映了最新更新。
【问题讨论】: