Создать таблицу с условиями & из нескольких источников - PullRequest
0 голосов
/ 05 октября 2018

Мне нужно создать таблицу со столбцом из двух других таблиц.Мне также нужно иметь условие для нескольких столбцов (обычно тестирование, если значение строки не равно нулю).Я пробовал несколько способов, но мне удалось добавить столько столбцов, сколько я хочу из одной другой таблицы, без каких-либо условий тестирования.

вот в основном то, что я хотел бы сделать:

CREATE TABLE target_table
AS(        
SELECT column1 FROM source_table1 WHERE column1 IS NOT NULL
UNION
SELECT column2, column3 FROM source_table1
UNION
SELECT column1 FROM source_table2
)

с этим запросом я получаю: "блок запроса имеет неправильное количество столбцов результата".

Я пробовал также это:

CREATE TABLE target_table
AS(        
SELECT column1 FROM source_table1 WHERE column1 IS NOT NULL
UNION
SELECT column2 FROM source_table1
)

Это "работает", так как нет ошибок, но ни одна из строк column2 не находится в моей target_table.Это, вероятно, тривиально, но мне не удалось найти какой-либо ответ на этот вид создания таблицы с условием и происхождением нескольких столбцов ..

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

Это просто.Вам просто нужно добавить пустой столбец, где вы хотите получить только один.Не забудьте привести столбец к типу данных.Ниже приведен пример столбца строкового типа.Если вы хотите получить целочисленный столбец из source_table2, поместите этот оператор выбора выше всех.

CREATE TABLE target_table
AS(        
SELECT column1 , '' FROM source_table1 WHERE column1 IS NOT NULL
UNION
SELECT column2, column3 FROM source_table2
UNION
SELECT column1 , '' FROM source_table3
)
0 голосов
/ 05 октября 2018

Это просто.Вам просто нужно добавить пустой столбец, где вы хотите получить только один.Не забудьте привести столбец к типу данных.Ниже приведен пример столбца строкового типа.

CREATE TABLE target_table
AS(        
SELECT column1 , '' FROM source_table1 WHERE column1 IS NOT NULL
UNION
SELECT column2, column3 FROM source_table2
UNION
SELECT column1 , '' FROM source_table3
)

Если вы хотите получить целочисленный столбец из source_table2, поместите этот оператор выбора выше всех.

CREATE TABLE target_table
    AS(    
 SELECT column2, column3 FROM source_table2    
    UNION
    SELECT column1 , null FROM source_table1 WHERE column1 IS NOT NULL


    UNION
    SELECT column1 , null FROM source_table3
    )
0 голосов
/ 05 октября 2018

Номер столбца должен быть одинаковым для оператора объединения, а тип данных также должен быть одинаковым

CREATE TABLE target_table
AS select * from    
 (        
SELECT column1, ' ' as column3 FROM source_table1 WHERE column1 IS NOT NULL
UNION
SELECT column2, column3 FROM source_table1
UNION
SELECT column1, '' FROM source_table2
) t

Таким образом, в вашем запросе номер столбца не был одинаковым

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...