sql - SQL根据列号将一行拆分为多行
问题描述
我有一个订单表,我会保持简单。我需要根据订单中的数量拆分行。例如,如果订单数量为 4,我需要将原始行拆分为 4 行,每行数量为 1。下面的示例数据。
ID FKID Product QTY
1 100 Widget 4
我需要这样的结果。
ID FKID Product QTY
1 100 Widget 1
2 100 Widget 1
3 100 Widget 1
4 100 Widget 1
解决方案
使用临时计数表和简单 JOIN 的另一种选择
例子
Select ID = row_number() over (partition by A.ID order by N)
,FKID
,Product
,Qty = 1
From YourTable A
Join (
Select Top (1000) N=Row_Number() Over (Order By (Select NULL))
From master..spt_values n1 ,master..spt_values n2
) B on N<=A.[QTY]
退货
ID FKID Product Qty
1 100 Widget 1
2 100 Widget 1
3 100 Widget 1
4 100 Widget 1
推荐阅读
- reactjs - Google App Engine - Razzle isomorphic react app - serve issues with no client bundles or assets
- python - shift numpy array by row
- php - PHP没有将变量传递给插入?
- azure-devops - 持久化由代理上的任务产生的进程的方法?
- kubernetes - Kube-controller-manager HPA 计算未就绪的 pod 并且不考虑将它们用于所需的副本计算
- javascript - 按钮单击事件后如何正确倒计时秒数
- generics - Kotlin 无法通过方法引用推断 Function 的类型
- java - 使用我的代码中的 2 个变量创建循环(Android)
- python - 创建一列,按条件将一组行的最大值分配给该组中的所有行
- jenkins - Jenkins 在加载插件之前执行 Groovy 脚本