2014-10-21 4 views
0

У меня есть таблицаОбъединение двух (или нескольких) столбцов таблицы

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

В столбце А и С должны быть объединены, если значение одно и то же. Если есть не то же самое, это всегда так, что один пустой

Так что результат должен быть:

a b 
1 2  
1 3  
1 4 
2 1 

Есть ли функция, которая может быть применена в PostgreSQL?

+1

Возможно, вам следует расширить свой случай, «желаемые результаты можно получить с помощью« SELECT a, b FROM tab » – vyegorov

+0

. В тестовом случае должны быть указаны все rel очевидные случаи. –

ответ

1

По вашему описанию:

Столбец а и с должны быть объединены, если значение совпадает. Если есть не то же самое, это всегда так, что один пустой

все, что вам нужно, это безусловная 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; 
1

Вы ищете что-то в этом роде?

SELECT COALESCE(c, a), b 
FROM your_table 
WHERE COALESCE(c, a) = a 
Смежные вопросы