gpt4 book ai didi

sql-server - SQL多次插入同一行

转载 作者:行者123 更新时间:2023-12-04 18:03:18 26 4
gpt4 key购买 nike

我正在尝试编写一个存储过程,它将从如下表中获取行

enter image description here

并将它们插入与 Quantity 列的值一样多的次数。它还应该为插入的行分配一个唯一的名称和编号。

最终结果应该类似于下面的屏幕截图

enter image description here

我可以通过下面的 SQL 非常接近我想要的 Source

INSERT INTO dbo. MyTable (....)
SELECT
t1.Name + ' (' + CAST(E.n as VARCHAR(3)) + ')',
@Prefix + ' - ' + ROW_NUMBER () OVER (ORDER BY t1.Name )
FROM
MyFirstTable t1
JOIN ....
JOIN .....
CROSS JOIN
(SELECT TOP 500 ROW_NUMBER() OVER(ORDER BY (SELECT 1)) FROM sys.columns)E(n)
WHERE
E.n <= t1.Quantity
AND....

上面的说法是可行的,因为我知道数量永远不会超过 500,但我不太喜欢它的完成方式。有没有更好的方法来实现这一点?

我对sql不是很有经验。

最佳答案

您似乎已经了解了大部分的需求。至于不超过的 top 500,您可以将其留在那里或将其删除。我想这就是您正在寻找的:

SELECT
id, --not sure where this id comes from but looks different in your output
CASE
WHEN E.n-1 > 0
THEN t1.Name + ' (' + CAST(E.n-1 as VARCHAR(3)) + ')'
ELSE t1.Name
END as Name,
@prefix + ' - ' + cast(ROW_NUMBER () OVER (ORDER BY t1.id) as varchar(10)) as Number
FROM
test t1
JOIN ...
JOIN ...
CROSS JOIN
(SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) FROM sys.columns)E(n)
WHERE
E.n <= t1.Quantity
AND ....;

SQL Fiddle Demo

关于sql-server - SQL多次插入同一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31574814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com