如何在SQL查询中使用a for each循环类型

时间:2017-05-10 18:52:49

标签: sql sql-server

有没有办法在SQL中通过一个字符串数组进行某种类型的循环?我将数据附加到#T_POLICY,我想用一个数据库运行查询,并使用不同的数据库运行相同的查询。

实施例

use Staging__4SBI_STG_BG
go

WITH cteEnumerate AS
(
    SELECT *
           ,RN = ROW_NUMBER() OVER (PARTITION BY POLICY_ID ORDER BY LOADDATE DESC)
    FROM dbo.STG_POLICY
)
INSERT INTO #T_POLICY
SELECT SOURCE, AGENCY_D, POL_SEQ, POLICY_ID, POL_ENDNUMBER, PRODUCT_ID, 
COMPANY_ID
FROM cteEnumerate
WHERE RN = 1
ORDER BY POLICY_ID; 

所以我想使用的下一个是使用Staging__4SBI_STG_TB而不是BG,还有很多其他的可以运行。我可以创建一个包含这些名称的表并运行它们吗?任何帮助都会很棒。

由于

1 个答案:

答案 0 :(得分:0)

如何加载表dbo.STG_POLICY?您可以向表中添加列IsLatestPolicy BIT。

WITH cte AS (SELECT *
                           ,RN = ROW_NUMBER() OVER (PARTITION BY POLICY_ID ORDER BY LOADDATE DESC)
                      FROM dbo.STG_POLICY
)
UPDATE cte
SET IsLatestPolicy = CASE WHEN RN = 1 THEN 1 ELSE 0 END;

所以每次你都可以选择原始表

SELECT SOURCE
      , AGENCY_D
      , POL_SEQ
      , POLICY_ID
      , POL_ENDNUMBER
      , PRODUCT_ID
      , COMPANY_ID
FROM dbo.STG_POLICY
WHERE IsLatestPolicy = 1

因此无需为启动循环创建另一个表。