2014-11-28 3 views
0

У меня есть две таблицы:запрос, чтобы объединить две таблицы в Sql Server

TABLE1 (currency nchar(3), seq int) 
TABLE2 (code, currency nchar(3), seq int, value money) 

Примеры данных для TABLE1

currency seq 
USD   1 
EUR   2 
CNY   3 
GBP   4 

Образцы данных для TABLE2

code  currency  seq value 
111  USD   1  650,90 
111  AED   5  330,80 

222  USD    1  540,90 
222  GBP    4  778,40 
222  EUR    2  290,30 

Теперь мне нужно добавить в TABLE2 валюты от TABLE1, но только те, что отсутствуют в TABLE2 для определенного code.

Пример вывода:

code currency  seq value 
    111  USD   1  650,90 
    111  AED   5  330,80  --this currency should stay even it is not in TABLE1 
    111  EUR   2  NULL  --this currency was missing for code 111 
    111  CNY   3  NULL  --this currency was missing for code 111 
    111  GBP   4  NULL  --this currency was missing for code 111 

    222  USD   1  540,90 
    222  GBP   4  778,40 
    222  EUR   2  290,30 
    222  CNY   3  NULL  --this currency was missing for code 222 

Я мог бы показать мои попытки построить запрос, но все они терпят неудачу.

ответ

0

Попробуйте ниже запрос и посмотреть, если это помогает:

insert into TABLE2 (code, currency, seq, value) 
select t.GroupCode, t.currency, t.seq, NULL 
from 
(
    select t2.code as GroupCode, t1.currency, t1.seq 
    from (select code, currency from TABLE2 group by code, currency) t2 
    cross join TABLE1 t1) t 
left join (select code, currency from TABLE2 group by code, currency) t3 
on t.currency = t3.currency 
where t3.code is null 
group by t.GroupCode, t.currency, t.seq 
0
Insert Into TABLE2 (currency,seq) 
    select currency,seq from Table1 t1 where t1.currency not in (select currency from Table2)  
+0

, что о столбце 'Код'? –

+0

Вы хотите вставить только валюту Из таблицы 1, если вы хотите добавить код, кроме таблицы, также должен иметь кодовый столбец. – Dhaval

+0

Нет, я не могу добавить «код» в таблицу1, я уверен, что есть способ использования объединений и группировки , –

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