2015-07-28 4 views
1

Я прочитал решения, чтобы объединить два столбца из 3 строк в один столбец из 6 строк, но я думаю, что хочу что-то еще.SQL: Как объединить две таблицы в одну

Допустим, у вас есть две колонки:

Column 1  Column 2 
NULL   D 
B    NULL 
C    NULL 

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

Column 3 
D 
B 
C 

Я получаю эти столбцы после выполнения UNION ALL. Таким образом, это не таблицы базы данных , а столбцы, которые я выбрал.

Я использую postgresql.

Это то, что я пытался до сих пор:

SELECT col1, col2, t2.col3 from t1 
LEFT JOIN t2 
ON t1.col1 like '%.'||t2.col3 

UNION ALL 

SELECT col1, col2, col3 From t1 
LEFT JOIN t2 
ON t1.col1 = concat(t2.col3, '.') 

Вы можете видеть, что, как я присоединяюсь те же две таблицы на разных условиях, я получаю различные части информации.

+0

Не могли бы вы использовать кодовые метки? Сложно сказать, какие столбцы вы говорите, это колонка 'D' или столбец' DB'? 'Столбец 3 D'' B C' или 'Столбец 3 D B C'? – Ejesalva

+1

Возможный дубликат [Что такое эквивалент PostgreSQL для ISNULL()] (http://stackoverflow.com/questions/2214525/what-is-the-postgresql-equivalent-for-isnull) – Jamiec

ответ

2

Функция вы ищете является COALESCE

SELECT COALESCE(Column1,Column2) AS Column3 
FROM t1 

, как вы пытались сделать это было супер-сложным, вы могли бы, вероятно, также решить ее как

SELECT Column1 FROM t1 WHERE Column1 IS NOT NULL 
UNION ALL 
SELECT Column2 FROM t1 WHERE Column2 IS NOT NULL 

Я d придерживаться первым способом

Смежные вопросы