获取特定列分组的最大序列号

get the max sequence number of a specific column grouping

正如标题所说,我如何 select 具有每个 AssetCode 分组的最大序列号的行。

我尝试了 IN 子句运算符,但它不会占用两列。

AssetCode             SeqNo
---------------------------
AWET-2015-00001         1
AWET-2015-00001         2
AWET-2015-00001         3
AWET-2015-00001         4
AWET-2015-00002         1
AWET-2015-00002         2
AWET-2015-00002         3

代码:

SELECT * 
FROM E_FixedAssetLedger
WHERE Fal_AssetCode, Fal_SeqNo IN (SELECT Fal_AssetCode, MAX(Fal_SeqNo)
                                   FROM E_FixedAssetLedger
                                   GROUP BY Fal_AssetCode)

我们可以尝试使用JOIN的聚合函数子查询来实现。

SELECT f.*
FROM E_FixedAssetLedger f
INNER JOIN (
    SELECT Fal_AssetCode,Max(Fal_SeqNo) Fal_SeqNo
    FROM E_FixedAssetLedger
    GROUP BY Fal_AssetCode
) fa ON f.Fal_AssetCode = fa.Fal_AssetCode
AND f.Fal_SeqNo = fa.Fal_SeqNo

如果您的 RDBMS 支持 window 函数,我们可以尝试使用 ROW_NUMBER window 函数来获取 Max(SeqNo) 每个 AssetCode

SELECT *
FROM (
 SELECT *,
    ROW_NUMBER() OVER(PARTITION BY AssetCode ORDER BY  SeqNo DESC) rn
 FROM E_FixedAssetLedger
) t1
WHERE rn = 1