【发布时间】:2019-07-18 16:04:23
【问题描述】:
我有一张桌子
| ID | V1 | V2 |
| 100 | 1 | 1 |
| 100 | null | 1 |
| 101 | null | null |
| 101 | 1 | 1 |
| 102 | 1 | null |
| 102 | 1 | null |
需要的样本输出:
ID 100 在至少其中一行中具有 V1 值,因此需要 1
对于 ID 101 相同,至少其中一行具有 V1 值,因此需要 1
ID 102 在两行中都没有 V2 值,所以需要为空
需要的输出
| ID | V1 | V2 |
| 100 | 1 | 1 |
| 101 | 1 | 1 |
| 102 | 1 | null |
试图将这些值组合成一个列表并获得最大值
有没有更简单的功能可以做到这一点?
【问题讨论】:
-
如果你的ID 102有1和2作为V1值,你需要哪一个?
-
为什么不
max()和 GROUP BY?这对我来说似乎很容易。 -
永远不会像 v1 和 v2 的值只有 1 和 null
-
@JNevill 是的,它会起作用,我想知道是否有任何功能
-
这不仅是因为不能保证您可以向数据库授予该列的每一行都将具有空值或完全相同的值。就像没有办法说“如果您在此列中遇到的每个值都不是任何值或某个单独的不同值,则按列表打印出该组的单个不同值”。相反,您选择一个符合您要求的聚合公式并使用它。在这种情况下,您可以使用
max、min或avg,因为这无关紧要。