【发布时间】:2021-05-08 02:03:57
【问题描述】:
在 Oracle,我想在 TABLE 下面过滤为
| COLUMNA | COLUMNB | COLUMNC |
|---|---|---|
| 19 | AAA | PRIMARY |
| 20 | AAA | PRIMARY |
| 8 | AAA | SECONDARY |
| 7 | AAA | SECONDARY |
| 7 | AAA | PRIMARY |
| 8 | AAA | SECONDARY |
| 9 | AAA | SECONDARY |
我的预期输出是
| COLUMNA | COLUMNB | COLUMNC |
|---|---|---|
| 19 | AAA | PRIMARY |
| 20 | AAA | PRIMARY |
| 7 | AAA | PRIMARY |
| 9 | AAA | SECONDARY |
逻辑是按 COLUMNA 和 COLUMNB 分组(请评估以下分组条件。)
- 如果columnc 候选记录(按
COLUMNA和COLUMNB分组)仅包含PRIMARY取PRIMARY。 - 如果 columnc 候选记录(按
COLUMNA和COLUMNB分组)仅包含SECONDARYtakeSECONDARY。 - 如果columnc候选记录(按
COLUMNA和COLUMNB分组)包括PRIMARY和SECONDARY集,取PRIMARY。 - 如果columnc候选记录(按
COLUMNA和COLUMNB分组)包含重复的SECONDARY,则设置跳过记录。 - 假设这一行有 100 列,所以我需要自己获取行。 MAX MIN 在这里不起作用。
我使用了几个row_number() 函数和where not exists,但都被遗忘了。
【问题讨论】:
-
请解释逻辑。
-
为什么结果集中是 9?
-
已编辑条件。因为它必须在那里。如果我的专栏只有次要,它应该包含在@GordonLinoff
-
COLUMNA8 值有 2SECONDARY,它不在您的预期输出中。你清楚你想要什么吗?如果COLUMNB总是具有相同的值,为什么你说逻辑是unCOLUMNA和COLUMNB? -
是的@JaimeDrq。我不需要那些行,它必须被跳过。因为我在那里没有初选候选人,所以问题是加倍
secondary。