我想在数据库中创建单个表的列的 cartesian 产品。
我有一个表,每列有3列和3个值,然后我希望在表的列中有27个结果行的笛卡尔积。
获得此结果的最佳方法是什么,或者我应该使用任何数据结构来生成输出?
答案 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您的数据。