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

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

我正在使用teradata sql assistant检索结果,需要一些数据重复消除帮助。我只想返回基于prod\u id的最大vrsn\u id的结果。
我在代码中尝试了类似的操作,但没有按预期工作:

  1. FROM(
  2. SELECT *, ROW_NUMBER() OVER (
  3. PARTITION BY PROD_ID
  4. ORDER BY VRSN_ID DESC) AS ROWNUM
  5. FROM tblDATA)

当前结果:

  1. CMPNY_CD VRSN_ID PROD_ID
  2. ABC 1 33303115
  3. ABC 1 33303115
  4. ABC 1 33303115
  5. ABC 2 33303115
  6. ABC 4 32632795
  7. ABC 2 32632795

期望结果:

  1. CMPNY_CD VRSN_ID PROD_ID
  2. ABC 2 33303115
  3. ABC 4 32632795
nxowjjhe

nxowjjhe1#

使用 qualify :

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

相关问题