SQL聚合函数

时间:2015-12-08 14:20:29

标签: sql

想象一下,我有一个包含行数据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

1 个答案:

答案 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或任何具有至少一行的虚拟表。