2014-02-25 56 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