【问题标题】:Teradata SQL data partitionTeradata SQL 数据分区
【发布时间】:2018-02-05 21:14:08
【问题描述】:
ID  ID1 Name
111 11  A
111 11  AA
222 12  B
222 13  C

我有一个上表,我希望得到如下结果。

ID  ID1 Name
111 11  A
111 11  AA
222 12  B

基本思路是当 ID 和 ID1 的行值相同时,它应该是可见的,当 ID 行值相同而 ID1 行值不同时,应该选择上面的那个。

【问题讨论】:

  • 如果所有四行都有ID111,你会得到什么?
  • 逻辑是这样写的,我们不会得到四行..

标签: sql teradata


【解决方案1】:

这与您的结果和描述相匹配,返回所有具有最低 ID1 每个 ID 的行:

SELECT *
FROM mytable
QUALIFY
   RANK()
   OVER (PARTITION BY ID
         ORDER BY ID1) = 1

【讨论】:

  • @GordonLinoff:是的,应该是ORDER BY ID1,已修复。
猜你喜欢
  • 2016-01-18
  • 2020-06-05
  • 2017-12-12
  • 1970-01-01
  • 1970-01-01
  • 2018-11-19
  • 1970-01-01
  • 2021-12-06
  • 2014-07-01
相关资源
最近更新 更多