gpt4 book ai didi

sql - 根据条件 SQL 复制行

转载 作者:太空狗 更新时间:2023-10-30 01:53:55 27 4
gpt4 key购买 nike

我有一个看起来像这样的表

+-------+------+------+----------+ 
| Index | F1 | F2 | Multiply |
+-------+------+------+----------+
| 0 | LG | SC | 1 |
| 1 | WE | CC | 1 |
| 2 | TY | PL | 2 |
+-------+------+------+----------+

我想将“相乘”列乘以 2 以确定要添加到结果中的行数。对于上面的示例,我希望我的 SQL 查询返回:

+------+-----+-----+
|Index | F1 | F2 |
+------+-----+-----+
| 0 | LG | SC |
| 0 | LG | SC |
| 1 | WE | CC |
| 1 | WE | CC |
| 2 | TY | PL |
| 2 | TY | PL |
| 2 | TY | PL |
| 2 | TY | PL |
+------+-----+-----+

我没有太多编写 SQL 查询的经验,因此非常感谢您的帮助。

最佳答案

试试这个

with myTable as (
select * from (values
(0,'LG','SC',1)
,(1,'WE','CC',1)
,(2,'TY','PL',2)
) t ([Index], F1, F2, Mutiply)
)
select
[Index], F1, F2
from
myTable m
join master.dbo.spt_values v on m.Mutiply * 2 > v.number
where
Type = 'P'

编辑:添加一些描述

通过编写如下查询

select * from table 
cross join (values (1),(2)) t(n)

我们可以将表格中的行加倍。并且 cross join (values (1),(2),(3),(4)) t(n) 会将行增加四倍。在这种情况下,行乘法将取决于列 Multiply。所以我们需要乘以 2 列的值 Multiply 并用数字序列 (0,1,2,3,4,5,6,7...) 连接表,其中数字较小比计算值。例如,对于 Multiply = 2,连接条件将为 4 个小于 2*2 的数字(0、1、2、3)。这 4 个数字将使初始行翻四倍。

master.dbo.spt_values 仅用于获取数字序列。可以在运行时生成序列,也可以使用另一个带有数字序列的表

关于sql - 根据条件 SQL 复制行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48557731/

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