2014-02-25 54 views
-2

我想创建一个笛卡尔数据库中单个表的列的乘积。数据库中的笛卡尔积

我有一个表,每列有3列和3个值,然后我想在表的列中产生27个笛卡儿积的行。

什么是最好的方式来获得这个结果或者我应该使用任何数据结构来产生我的输出?

回答

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您的数据。

+0

感谢您的帮助....但有一个更多的场景,因为我在运行时在数据库中创建表,并且表中的插入也是在运行时完成的......所以列的数量不是固定的。那么,这将是什么解决方案。 –

+0

@Neeraj_Yadav如果是这样的话,为什么不创建你的表不同?摆脱这个可怕的数据库设计,并做更多的维护。 – paqogomez

+0

发布一些示例输入以及您想要的结果。 – paqogomez