Заполнить таблицу из другого запроса - PullRequest
1 голос
/ 31 августа 2011

Итак, у меня есть SQL-запрос, который дает мне список целых. Перечислено здесь:

select distinct
            re_entity_id
      from cfo_transaction 
            inner join cfo_tran_quote  ON tq_tr_transaction_id = tr_transaction_id
            inner join cfo_trans_entity_rel on te_tr_transaction_id = tr_transaction_id and te_rv_rel_type_id in (713,715)
            inner join com_entity on te_co_re_entity_id = re_entity_id
      where 
            dbo.islmsloan(tq_tran_quote_id) = 1
            and isnull(re_fictitious_bit,0) = 0

Это дает мне список идентификаторов, которые мне нужно вставить в другую таблицу вместе с другими вещами. Другая таблица выглядит так:

ens_engine_sponsor_id - PK
ens_rs_sponsor_id - relates to the id from the other query
ens_use_new_models_bit - should always be 1 for each insert
ens_start_dt - should be 09/05/2011 for every one
ens_end_dt - should be null for every one

Как бы я сформулировал что-то, что автоматически вставляет строку для каждого из этих идентификаторов в этой новой таблице с заданными критериями? (Не очень хорошо с SQL ...)

Спасибо

Ответы [ 2 ]

3 голосов
/ 31 августа 2011

Вы можете добавить константы в список SELECT, как показано ниже.

insert into othertable
            (ens_rs_sponsor_id,
             ens_use_new_models_bit,
             ens_start_dt)
select distinct re_entity_id,
                1,
                '20110905'
from   cfo_transaction
       inner join cfo_tran_quote
         ON tq_tr_transaction_id = tr_transaction_id
       inner join cfo_trans_entity_rel
         on te_tr_transaction_id = tr_transaction_id
            and te_rv_rel_type_id in ( 713, 715 )
       inner join com_entity
         on te_co_re_entity_id = re_entity_id
where  dbo.islmsloan(tq_tran_quote_id) = 1
       and isnull(re_fictitious_bit, 0) = 0  

Если причиной использования DISTINCT является удаление дубликатов, внесенных объединениями, вы можете использовать WHERE EXISTS.

1 голос
/ 31 августа 2011

Вы не упомянули, является ли ens_engine_sponsor_id полем идентификации, но предполагая, что это так, вы можете сделать это.

    INSERT INTO MyTableName(
        ens_rs_sponsor_id,      
        ens_use_new_models_bit,
        ens_start_dt,
        ens_end_dt)
select distinct 
            re_entity_id,
            1,
            '09 May 2011',
            NULL
      from cfo_transaction  
            inner join cfo_tran_quote  ON tq_tr_transaction_id = tr_transaction_id 
            inner join cfo_trans_entity_rel on te_tr_transaction_id = tr_transaction_id and te_rv_rel_type_id in (713,715) 
            inner join com_entity on te_co_re_entity_id = re_entity_id 
      where  
            dbo.islmsloan(tq_tran_quote_id) = 1 
            and isnull(re_fictitious_bit,0) = 0 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...