使用TSQL拉取策略号为X的所有行,其中至少有一行的trans代码为Y

使用TSQL拉取策略号为X的所有行,其中至少有一行的trans代码为Y,tsql,where,temp-tables,Tsql,Where,Temp Tables,我有一个表,行policy_unbr和trans\cd。每个策略有多个trans_cd(即使是相同类型的)。我想提取所有保单记录,其中所述保单有trans\u cd的“ER”或“RO”。因此,任何policy\u nbr带有trans\u cd的'ER'或'RO'关联,我想将所有带有该policy\u nbr的条目拉入一些新的临时表,而不仅仅是带有'ER'或'RO'的条目 我现在掌握的代码是: SELECT * FROM urs_prem_detail_interim INTO ER_RO_ur

我有一个表,行
policy_unbr
trans\cd
。每个策略有多个trans_cd(即使是相同类型的)。我想提取所有保单记录,其中所述保单有
trans\u cd
的“ER”或“RO”。因此,任何
policy\u nbr
带有
trans\u cd
的'ER'或'RO'关联,我想将所有带有该
policy\u nbr
的条目拉入一些新的临时表,而不仅仅是带有'ER'或'RO'的条目

我现在掌握的代码是:

SELECT * FROM urs_prem_detail_interim
INTO ER_RO_urs_prem_detail
WHERE uws_trans_cd IN ('ER','RO')
但我知道这不会真正起作用。例如,如果我有
policy\u nbr
'123',并且有一个带有
trans\u cd
的'ER'的保单编号条目,那么我想用
policy\u nbr
123提取所有值,而不是像我当前代码那样只提取带有'ER'的值


非常感谢您的帮助!如果我的解释令人困惑,我深表歉意。

使用子查询:内部
选择
查询将把trans\u cd的所有策略编号作为“ER”或“RO”拉入,然后外部查询将拉入具有匹配策略编号的所有记录

select *
  from urs_prem_detail_interim
 where policy_nbr in (select distinct policy_nbr
                        from urs_prem_detail_interim
                       where uws_trans_cd in ('ER', 'RO'))
您将需要使用子选择。我不再熟悉TSQL,但这将是要点:

    SELECT * FROM urs_prem_detail_interim
    INTO ER_RO_urs_prem_detail
    WHERE policy_nbr in
      (SELECT policy_nbr FROM urs_prem_detail_interim
      WHERE uws_trans_cd IN ('ER','RO'))
这可以将记录插入现有表
ER\u RO\u urs\u prem\u detail
。如果您想一步完成,您可能需要使用
创建表ER\u RO\u Urs\u prem\u detail AS SELECT…


在不使用
INTO..
短语的情况下测试查询,以确保获得正确的数据。

您可以使用子查询或将其与同一个表联接,以获得所需的结果集。