首页 > 解决方案 > 在 SQL 中将父/子关系记录展平为 1 行(更新)

问题描述

我在同一个订单号上最多有 3 条记录(单击下面的链接查看图片)。我需要将其展平为 1 行,因为我的目标表具有非规范化(展平)架构。我需要对所有 3 组执行此操作——firstcolX、secondcolX、thirdcolX,所以它只有 1 行。1:N 关系是订单(父)到订单行项目(子)

请点击这里查看想要的结果

谢谢,非常感谢您对此的任何帮助。FWIW,我正在使用 SSIS 将数据从 SQL 源移动到 SQL 目标。我试过 PIVOT,但我们不希望行数据作为列名。

标签: sqlsql-serverssisetl

解决方案


我会像 Venkataram 一样做,但在连接中做工作而不是相关子查询:

;WITH cte AS
(
SELECT *,RowNumber() over(Partition by myOrderNum ORDER BY MyOrderNum) AS rnk
FROM TableName
)
Select cte1.myOrderNum 
   ,cte1.FirstCol1A 
   ,cte2.FirstCol1A as FirstCol1B
   ,cte3.FirstCol1A as FirstCol1C
...
from cte cte1
    join cte cte2 on cte2.myOrderNum = cte1.myOrderNum and cte2.rnk=2
    join cte cte3 on cte3.myOrderNum = cte1.myOrderNum and cte3.rnk=3
where cte1.rnk=1

编辑:将 ordernum 更改为 MyOrderNUm


推荐阅读