gpt4 book ai didi

sql - SQL Server 中的组合

转载 作者:行者123 更新时间:2023-12-05 01:11:03 24 4
gpt4 key购买 nike

使用 SQL Server (2008) 并给出一个包含如下行的表:

Id
--
4
7

使用 x 的值(例如参数@x),我希望能够生成具有 x 列的行,给出表中 Id 值的所有组合:

例如,x=2 时,将产生如下两列的输出:

4,4
4,7
7,4
7,7

在 x=3 的情况下,结果将是一行三列,如下所示:

4,4,4
4,4,7
4,7,4
4,7,7
7,4,4
7,4,7
7,7,4
7,7,7

该表包含的行数可能多于或少于上述示例中的 2 行,这也取决于 x 的值会改变输出中组合行/列的数量。

例如如果表格包含:

4
7
9

如果x=2,会产生

4,4
4,7
4,9
7,4
7,7
7,9
9,4
9,7
9,9

如果x=3,会产生

4,4,4
4,4,7
4,4,9
4,7,4
4,7,7
4,7,9
4,9,4
4,9,7
4,9,9
etc

谢谢

最佳答案

您可以使用递归 CTE 执行此操作:

with cte as (
select convert(varchar(max), id) as ids, 1 as cnt
from t
union all
select ids + ',' + convert(varchar(max), id), cnt + 1
from cte join
t
on cte.cnt < @x
)
select *
from cte
where cnt = @x;

Here是一个数据库<> fiddle 。

注意:您需要将结果表示为字符串,因为 SQL 不允许您返回可变数量的列。您可以将每个值放在单独的列中,但这样您将无法使用变量来控制组合的大小。

关于sql - SQL Server 中的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55675877/

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