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
类似于 HAVING
或 WHERE
,只是您可以使用 window 函数。
我正在使用 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
类似于 HAVING
或 WHERE
,只是您可以使用 window 函数。