【发布时间】:2014-02-25 09:29:25
【问题描述】:
我想创建数据库中单个表的列的笛卡尔乘积。
我有一个表,每列有 3 列和 3 个值,然后我希望在表的列中得到 27 行笛卡尔积。
获得此结果的最佳方法是什么,或者我应该使用任何数据结构来生成我的输出?
【问题讨论】:
标签: sql-server-2008-r2 cartesian-product
我想创建数据库中单个表的列的笛卡尔乘积。
我有一个表,每列有 3 列和 3 个值,然后我希望在表的列中得到 27 行笛卡尔积。
获得此结果的最佳方法是什么,或者我应该使用任何数据结构来生成我的输出?
【问题讨论】:
标签: sql-server-2008-r2 cartesian-product
创建笛卡尔积很简单。
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 您的数据。
【讨论】: