Select 不同的行基于某一列的最大值

Select distinct rows based on MAX value of a certain column

我正在使用 Teradata SQL 助手检索结果,需要帮助删除一些数据。我只想 return 个基于 PROD_ID 的最大 VRSN_ID 结果。

我在代码中尝试过类似的操作,但没有按预期工作:

FROM( 
 SELECT *, ROW_NUMBER() OVER (
 PARTITION BY PROD_ID 
 ORDER BY  VRSN_ID DESC) AS ROWNUM 
 FROM tblDATA)

当前结果:

CMPNY_CD VRSN_ID PROD_ID
ABC 1 33303115
ABC 1 33303115
ABC 1 33303115
ABC 2 33303115
ABC 4 32632795
ABC 2 32632795

期望的结果:

CMPNY_CD VRSN_ID PROD_ID
ABC 2 33303115
ABC 4 32632795

使用qualify:

SELECT *
FROM tblDATA
QUALIFY ROW_NUMBER() OVER (PARTITION BY PROD_ID ORDER BY VRSN_ID DESC) = 1

QUALIFY 类似于 HAVINGWHERE,只是您可以使用 window 函数。