Stored procedures 在SQL Server存储过程中创建值列表的组合

Stored procedures 在SQL Server存储过程中创建值列表的组合,stored-procedures,combinations,Stored Procedures,Combinations,在我的SQL Server存储过程中,有9个数据类型为varchar(50)的参数。但是,我只知道在运行时参数中的项数 让我们假设,为了简单起见,我的9参数是F1 F2 F3,p1p2,a1a2a3,null,null,null,null,null,null 现在我需要生成所有可能的组合,如下所示 {F1 P1 A1}, {F1 P1 A2}, {F1 P1 A3}, {F1 P2 A1}, {F1 P2 A2}, {F1 P2 A3}, {F2 P1 A1}, {F2 P1 A2}, {F2

在我的SQL Server存储过程中,有9个数据类型为
varchar(50)
的参数。但是,我只知道在运行时参数中的项数

让我们假设,为了简单起见,我的9参数是F1 F2 F3,p1p2,a1a2a3,null,null,null,null,null,null

现在我需要生成所有可能的组合,如下所示

{F1 P1 A1}, {F1 P1 A2}, {F1 P1 A3}, {F1 P2 A1}, {F1 P2 A2}, {F1 P2 A3}, 
{F2 P1 A1}, {F2 P1 A2}, {F2 P1 A3}, {F2 P2 A1} {F2 P2 A2}, {F2 P2 A3}, 
{F3 P1 A1}, {F3 P1 A2}, {F3 P1 A3},{F3 P2 A1}, {F3 P2 A2}, {F3 P2 A3}

有人能帮我吗?

我使用拆分和交叉联接来解决这个问题

代码如下:

SELECT a1.value,a2.value,a3.value
FROM [Split]('F1,F2,F3',',') a1
CROSS JOIN [Split]('P1,P2',',') a2
CROSS JOIN [Split]('A1,A2,A3',',') a3;

{F1,F2,F3}
{P1,P2}
。。。都是单参数!否。第一个参数是F1 F2 F3。第二个参数是P1 P2。第三个参数是A1 A2 A3。Rest参数为空。你可以用逗号代替空格