从另一个查询填充表

时间:2011-08-31 15:46:48

标签: tsql sql-server-2008 insert

所以我有一个SQL查询,它给出了一个int列表。在此列出:

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

这给了我一个id列表,我需要将其与其他内容一起插入到另一个表中。另一个表看起来像这样:

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

我如何使用给定的条件为这个新表中的每个Id自动插入一些行? (SQL不太好......)

由于

2 个答案:

答案 0 :(得分:3)

您可以将常量添加到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 :(得分:1)

你没有提到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