sql—根据某列的最大值选择不同的行

muk1a3rh  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(280)

我正在使用teradata sql assistant检索结果,需要一些数据重复消除帮助。我只想返回基于prod\u id的最大vrsn\u 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
nxowjjhe

nxowjjhe1#

使用 qualify :

SELECT *
FROM tblDATA
QUALIFY ROW_NUMBER() OVER (PARTITION BY PROD_ID ORDER BY VRSN_ID DESC) = 1
``` `QUALIFY` 就像 `HAVING` 或者 `WHERE` ,除了可以使用窗口功能。

相关问题