使用 whileloop 循环所有表

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

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

策略表示例

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

覆盖范围表示例

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

车辆表示例

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

驱动程序表示例

保单编号 记录布局 vin 号码
ABC 主题 123
ABC 主题 123
Efg 主题 456

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

所需输出:

保单编号 记录布局 V 输入号码
ABC 波尔
ABC 道具
ABC prp1 123
ABC 主题 123
ABC 主题 123
Efg 波尔
Efg 道具
Efg prp1 456
Efg 主题 456
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.