2013-07-24 3 views
0

У меня есть 3 стола: Tbl1, Tbl2 и Tbl3.Вставка данных из двух таблиц, которые могут иметь соответствующие столбцы

Tbl3 имеет такую ​​структуру, что большинство столбцов в Tbl3 присутствует в Tbl2 + Tbl1.

Я не знаю, какие столбцы соответствуют, а какие нет.

Я хочу вставить данные от Tbl1 и Tbl2 до Tbl3.

Есть ли способ определить имена столбцов, которые соответствуют Tbl3, а затем вставить данные из Tbl1 и Tbl2?

Возможная структура таблиц как:

tbl1 ---> COLUMN1 | Колонка2 | Column3 | .... Column78

Tbl2 ---> Column79 | Столбец80 | Колонка81 | .... Колонка 100

Tbl3 ---> Column1 | Колонка2 | Column3 | .... Column100 | Столбец101 | Столбец102 ... Столбец 120

ответ

1

Вы можете получить имена столбцов от INFORMATION_SCHEMA.columns. Тогда вам нужно будет вручную создать запрос самостоятельно:

select tbl3.table_name, 
     (case when ct1.TABLE_NAME is not null then 'Y' else 'N' end) as InTbl1, 
     (case when ct2.TABLE_NAME is not null then 'Y' else 'N' end) as InTbl2 
from INFORMATION_SCHEMA.columns ct3 left outer join 
    INFORMATION_SCHEMA.columns ct1 
    on ct1.COLUMN_NAME = ct3.COLUMN_NAME and 
     ct1.TABLE_NAME = 'tbl1' left outer join 
    INFORMATION_SCHEMA.columns ct2 
    on ct2.COLUMN_NAME = ct3.COLUMN_NAME and 
     ct2.TABLE_NAME = 'tbl2' left outer join 
where ct3.TABLE_NAME = 'tbl3'; 

С помощью этой информации вы можете построить запрос, который вы хотите.

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