使用游标循环所有表格

问题描述 投票:0回答:1

我有一组 4 张表,保单表、保险范围表、车辆表和驾驶员表。

策略表示例

保单编号 记录布局
ABC 波尔
Efg 波尔

覆盖范围表示例

保单编号 记录布局
ABC 道具
Efg 道具

车辆表示例

保单编号 记录布局 vin 号码
ABC prp1 123
Efg Prp1 456

驱动程序表示例

保单号码 记录布局 vin 号码
ABC prp1 123
Efg Prp1 456

输出:

Policy Number|Record Layout|VIn number
Abc,polr,null
Abc,prop,null
Abc,prp1,123
Abc,subj,123
Efg,polr,null
Efg,prop,null
Efg,prp1,456
Efg,subj,456

我需要获取第一个保单记录,然后是关联的保险范围,然后是关联的车辆记录,然后是关联的驾驶员记录。我必须循环所有表并需要使用 SQL 游标编写逻辑。请给我一些指导方针来实现这一目标。

sql sql-server while-loop database-cursor
1个回答
0
投票

您不需要循环,一个简单的

union all
查询以及用于对结果进行排序的附加硬编码值将为您提供所需的结果:

;WITH CTE AS
(
    SELECT [Policy Number], [Record Layout], NULL as [VIn number], 1 As [Table Order]
    FROM Policy
    UNION ALL 
    SELECT [Policy Number], [Record Layout], NULL, 2
    FROM Coverage 
    UNION ALL 
    SELECT [Policy Number], [Record Layout], [VIn number], 3
    FROM vehicle 
    UNION ALL 
    SELECT [Policy Number], [Record Layout], [VIn number], 4
    FROM Driver 
)

SELECT [Policy Number], [Record Layout], [VIn number]
FROM CTE
ORDER BY [Policy Number], [Table Order]
© www.soinside.com 2019 - 2024. All rights reserved.