返回SQL中列的所有可能值组合

时间:2013-09-10 10:42:15

标签: sql-server

如何返回4列中所有值组合的列表,以便它们是Microsoft SQL Server 2012中的新行 e.g。

c1 c2 c3 c4
1  a  g  x
2  b  h  y

并将其转换为

c1 c2 c3 c4
1  a  g  x
1  a  g  y
1  a  h  x
1  a  h  y

依此类推4列中的所有(2X2X2X2)= 16行

已经回答了2列的类似解决方案

Return all possible combinations of values on columns in SQL

我需要4列的解决方案

2 个答案:

答案 0 :(得分:5)

使用交叉连接

select 
    t1.c1,
    t2.c2,
    t3.c3,
    t4.c4
from 
    yourtable t1 cross join
    yourtable t2 cross join
    yourtable t3 cross join
    yourtable t4

答案 1 :(得分:2)

由于您提供的链接有一个很好的答案,修改如下

select 
  distinct
  t1.C1,
  t2.C2,
  t3.C3,
  t4.C4
from 
  MyTable t1,
  MyTable t2,
  MyTable t3,
  MyTable t4