Sql 合并表的两(或多)列

Sql 合并表的两(或多)列,sql,postgresql,aggregate,coalesce,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中是否有可以应用的函数?您是否正在寻找类似的函数 SELECT COALESCE(c, a), b FROM your_table WHERE COALESCE(c, a) = a 根

我有一张桌子

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中是否有可以应用的函数?

您是否正在寻找类似的函数

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

根据你的描述:

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

你所需要的只是一个无条件的回答

假设“empty”的意思是
NULL
,而不是空字符串(
'
),在这种情况下,您需要添加:

COALESCE
适用于多个参数:

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

也许您应该扩展您的案例,因为可以通过
从选项卡中选择a、b来获得所需的结果。
SELECT COALESCE(NULLIF(a, ''), c) AS a, b FROM tbl;
SELECT COALESCE(a, c, d, e, f, g) AS a, b FROM tbl;