就我而言,有订单和订单头寸。每个订单位置都有一个数量。例如:
但现在我需要每个“位置元素”一行。这是我想要的输出:
我的想法是使用rank()
/over()
来获取增量数字,但我不知道如何使用数量作为乘数。
是否有一个聪明的解决方案来使用单列作为“行乘法器”?在我的例子中,sql 函数或循环是不可能的,只是简单的 sql :)
谢谢! :)
<小时/>通过来自 gvee
的查询,我能够为我的问题创建一个解决方案:
Select
BelPosId as OrderPositionId,
Artikelnummer as ProductId,
Bezeichnung1 as ProductName,
Menge as Quantity,
NumberTable.number+1 as ElementId
FROM KHKVKBelegePositionen
INNER JOIN
(SELECT (a.number * 256) + b.number As number
FROM (
SELECT number
FROM master..spt_values
WHERE type = 'P'
AND number <= 255
) As a
CROSS
JOIN (
SELECT number
FROM master..spt_values
WHERE type = 'P'
AND number <= 255
) As b) NumberTable
ON
NumberTable.number < Menge
诀窍是使用小于
运算符将数字表中的“quantity”列inner join
到“number”列,以模拟“乘法器”:
最佳答案
您可以使用不需要任何外部表的脚本:
SELECT t.quantity,
n.num
FROM table10 t
INNER JOIN (SELECT Row_number()
OVER(
ORDER BY object_id) num
FROM sys.all_objects) n
ON t.quantity >= n.num
我没有包含其他列,但您只需将它们添加到选择
列表
关于sql - 如何将单行与sql中列中的数字相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20540211/