SQL基于列值创建新行

时间:2018-06-17 16:46:50

标签: sql-server

我正在尝试使用SQL Server Management Studio将一些保险政策数据从Policy表转换为Driver表。

我需要为策略上的每个其他驱动程序创建一个新行,但保留策略级别信息。即,我需要查询此转换......

enter image description here

1 个答案:

答案 0 :(得分:0)

通过规范化修复您的架构。应该有一个引用策略表的额外驱动程序表。

同时有三个SELECT个,每个驱动数据列一个,UNION ALL个。{/ p>

SELECT policynum,
       vehiclereg,
       make,
       maindriver_name driver_name,
       maindriver_dob driver_dob
       FROM policytable
UNION ALL
SELECT policynum,
       vehiclereg,
       make,
       add1_name driver_name,
       add1_dob driver_dob
       FROM policytable
       WHERE additionaldrivers > 0
UNION ALL
SELECT policynum,
       vehiclereg,
       make,
       add2_name driver_name,
       add2_dob driver_dob
       FROM policytable
       WHERE additionaldrivers > 1;