sql - 在 SQL 中将父/子关系记录展平为 1 行(更新)
问题描述
我在同一个订单号上最多有 3 条记录(单击下面的链接查看图片)。我需要将其展平为 1 行,因为我的目标表具有非规范化(展平)架构。我需要对所有 3 组执行此操作——firstcolX、secondcolX、thirdcolX,所以它只有 1 行。1:N 关系是订单(父)到订单行项目(子)
谢谢,非常感谢您对此的任何帮助。FWIW,我正在使用 SSIS 将数据从 SQL 源移动到 SQL 目标。我试过 PIVOT,但我们不希望行数据作为列名。
解决方案
我会像 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
推荐阅读
- android - Kotlin ImageView 问题与 GetView 函数类型不匹配
- function - 在 Rust 中,什么是`fn() -> ()`?
- laravel - 在 laravel 的测试中的 getJson 没有被传递给控制器
- javascript - 如何在由“oninput”触发的函数中在vanila javascript中查看event.target
- javascript - Google Apps 脚本 - 如何将此代码应用于 Google 表格中的多个表格
- python - 使用数据库中的父节点和子节点填充 TreeView TKinter 小部件
- c++ - C++ - std::list.erase() 不删除元素
- php - curl https ssl证书问题错误#35
- perl - 在 Perl 脚本中“使用”基于 Moose 的包
- matlab - 在Matlab中填充复平面中的区域