SQL Server - 位列的所有可能组合

JDG*_*JDG 0 sql t-sql sql-server combinations sql-insert

我有一个带有 7 个 BIT 列(A、B、C、D、E、F 和 G)的空表。我希望用代表这些列的所有可能组合的行填充此表。理想情况下,不会有包含完全相同组合重复项的行。虽然我在这里显示了 7 列,但列数可能会更多,因此该解决方案应该是可扩展的。

填充后的表格片段如下所示:

在此处输入图片说明

理想情况下,这将基于 INSERT 语句,但我也对 T-SQL 循环解决方案持开放态度。我曾尝试使用 CROSS JOINS,但我有限的知识并没有让我走得很远。

任何帮助将不胜感激。

The*_*ler 5

使用 CTE 及其CROSS JOIN自身 7 次,如下所示:

with bits as (select 0 as bit union select 1)
select
  row_number() over(
    order by a.bit, b.bit, c.bit, d.bit, e.bit, f.bit, g.bit) as id,
  a.bit, b.bit, c.bit, d.bit, e.bit, f.bit, g.bit
from bits a
cross join bits b
cross join bits c
cross join bits d
cross join bits e
cross join bits f
cross join bits g
Run Code Online (Sandbox Code Playgroud)