想象一下,我有一个包含行数据A,B和C的列。在聚合列时,我希望B显示是否有任何行包含B,否则为C,否则为A.
这可能吗?我使用vertica但很想知道其他数据存储的解决方案。
+------+-------+
| Col1 | Col 2 |
+------+-------+
| A | X |
| B | X |
| C | X |
+------+-------+
SELECT ???(Col1), Col2
FROM my_two_column_table
GROUP BY Col2
预期结果:一行 - B,X
答案 0 :(得分:2)
这样的事情可行:
SELECT COALESCE( MAX(t2.value), MAX(t3.value), MAX(t4.value) )
FROM my_table t1
LEFT OUTER JOIN my_table t2 ON t2.value = 'B'
LEFT OUTER JOIN my_table t3 ON t3.value = 'C'
LEFT OUTER JOIN my_table t4 ON t4.value = 'A'
WHERE t1.value in ( 'A', 'B', 'C' )
t1
表也可以替换为dual
或任何具有至少一行的虚拟表。