给定一列值(“Black”、“White”、“Orange”),其序列号分别为1、2、3,我需要找到如下所示的排列和组合。

彩色序列 黑1 白2 橙色3 ColorCombi表,NotIn中有2列 黑白橙 白黑橙 橙色,黑色,白色 黑,白橙 黑橙白 橙色,白色黑色 黑、白、橙零
发布于 2018-10-28 13:16:20
这是很难做到的。您可以使用递归的CTE来完成这个任务:
with t as (
select v.*
from (values ('Black', 1), ('White', 2), ('Orange', 3)) v(color, seq)
),
combos as (
select cast('' as varchar(max)) as ins, cast('' as varchar(max)) as outs, 0 as seq
union all
select c.ins + v.ins, c.outs + v.outs, c.seq + 1
from t cross apply
(values (',' + t.color, ''), ('', ',' + t.color)) as v(ins, outs) join
combos c
on t.seq = c.seq + 1
)
select top (1) with ties stuff(ins, 1, 1, '') as ins, stuff(outs, 1, 1, '') as outs
from combos
order by seq desc ;这里是db<>fiddle。
https://stackoverflow.com/questions/53028831
复制相似问题