【发布时间】:2019-08-20 13:51:20
【问题描述】:
| col 1 | col 2 | col 3 |
|-------|-------|-------|
| 67458 | ADM | 1008 |
| 67458 | ADM | 1009 |
| 67458 | SKI | 1009 |
| 67458 | LIS | 1010 |
| 67458 | TOU | 1121 |
当col2='ADM' 时如何获取col3 的最大值并将其用作其余记录的值?
预期结果:
| col 1 | col 2 | col 3 | col 4 |
|-------|-------|-------|-------|
| 67458 | ADM | 1008 | 1009 |
| 67458 | ADM | 1009 | 1009 |
| 67458 | SKI | 1009 | 1009 |
| 67458 | LIS | 1010 | 1009 |
| 67458 | TOU | 1121 | 1009 |
我知道如何使用子选择和所有来做到这一点。 col4 将是一个伪列,用于下游的 JOIN 和其他内容。
我尝试了以下方法,但它填充的是 1121 而不是 1009:
MAX(col3) OVER (PARTITION BY col1 (CASE WHEN col2='ADM' THEN col2 END) ORDER BY col1)
【问题讨论】:
标签: sql amazon-redshift window-functions