数据库中的笛卡尔积

时间:2014-02-25 09:29:26

标签: sql-server-2008-r2 cartesian-product

我想在数据库中创建单个表的列的 cartesian 产品。

我有一个表,每列有3列和3个值,然后我希望在表的列中有27个结果行的笛卡尔积。

获得此结果的最佳方法是什么,或者我应该使用任何数据结构来生成输出?

1 个答案:

答案 0 :(得分:1)

创建笛卡尔积非常简单。

select 1 as one,2 as two,3 as three
into #test
union all select 4,5,6
union all select 7,8,9

select t1.*
from
  #test t1,
  #test t2,
  #test t3

drop table #test

这将自我加入从test(t1的实例)到test中每个其他记录(t2的实例)的每条记录。

如果您想创建新表格,只需将select t1.*更改为select t1.* into myTableName,他们就会填充该表格。

编辑: 根据你的问题,我相信我的答案会给你你想要的。但是,您可能需要pivot您的数据。