组合表的两列(或多列)

时间:2014-10-21 09:48:27

标签: sql postgresql aggregate coalesce

我有一张桌子

a   b   c
1   2   
1   3   
1   4   1
2   1   2

如果值相同,则应合并a和c列。如果不相同,那么总是空的

所以结果应该是:

a    b 
1    2    
1    3    
1    4
2    1

是否可以在PostgreSQL中应用任何功能?

2 个答案:

答案 0 :(得分:1)

你在找这样的东西吗?

SELECT COALESCE(c, a), b
FROM your_table
WHERE COALESCE(c, a) = a

答案 1 :(得分:1)

根据你的描述:

  

如果值相同,则应合并a和c列。如果   有不一样的,总有一个是空的

您需要的只是一个无条件的COALESCE

SELECT COALESCE(a, c) AS a, b FROM tbl;

假设“空”表示NULL,而不是空字符串''),在这种情况下,您需要添加NULLIF

SELECT COALESCE(NULLIF(a, ''), c) AS a, b FROM tbl;

COALESCE适用于多个参数:

SELECT COALESCE(a, c, d, e, f, g) AS a, b FROM tbl;
相关问题