2012-10-04 194 views
0

我需要幫助實現以下輸出。 我有一個表遞歸排列組合

declare @tblLevels table(
levelsID    INT IDENTITY(1,1), 
levelNumber    INT, 
levelDesc    VARCHAR(100)) 
insert into @tblLevels(levelNumber,levelDescription) 
values 
(1,'L1D1'), 
(1,'L1D2'), 
(1,'L1D3'), 
(1,'L1D4'), 
(2,'L2D1'), 
(2,'L2D2'), 
(2,'L2D3'), 
(2,'L2D4'), 
(3,'L3D1'), 
(3,'L3D2'), 
(3,'L3D3') 

select * from @tblLevels 

levelsID levelNumber levelDesc 
======================================== 
1    1   L1D1 
2    1   L1D2 
3    1   L1D3 
4    1   L1D4 
5    2   L2D1 
6    2   L2D2 
7    2   L2D3 
8    2   L2D4 
9    3   L3D1 
10    3   L3D2 
11    3   L3D3 

我有另一個表(@tblLevelSpreadOut),其結構變爲如下面

declare @tblLevelSpreadOut table(
levelSpreadOutID    INT IDENTITY(1,1), 
levelNumber1     INT, 
levelDesc1      VARCHAR(100), 
levelNumber2     INT, 
levelDesc2      VARCHAR(100), 
levelNumber3     INT, 
levelDesc3      VARCHAR(100)) 

它需要來自前表(@tblLevels)填充,使得輸出是

select levelNumber1, levelDesc1, levelNumber2 ,levelDesc2 , levelNumber3 ,levelDesc3 
from @tblLevelSpreadOut 

levelNumber1 levelDesc1 levelNumber2 levelDesc2 levelNumber3 levelDesc3 
============================================================================ 
1 L1D1 2 L2D1 3 L3D1 
1 L1D1 2 L2D1 3 L3D2 
1 L1D1 2 L2D1 3 L3D3 
1 L1D1 2 L2D2 3 L3D1 
1 L1D1 2 L2D2 3 L3D2 
1 L1D1 2 L2D2 3 L3D3 
1 L1D1 2 L2D3 3 L3D1 
1 L1D1 2 L2D3 3 L3D2 
1 L1D1 2 L2D3 3 L3D3 
1 L1D1 2 L2D4 3 L3D1 
1 L1D1 2 L2D4 3 L3D2 
1 L1D1 2 L2D4 3 L3D3 
1 L1D2 2 L2D1 3 L3D1 
1 L1D2 2 L2D1 3 L3D2 
1 L1D2 2 L2D1 3 L3D3 
1 L1D2 2 L2D2 3 L3D1 
1 L1D2 2 L2D2 3 L3D2 
1 L1D2 2 L2D2 3 L3D3 
1 L1D2 2 L2D3 3 L3D1 
1 L1D2 2 L2D3 3 L3D2 
1 L1D2 2 L2D3 3 L3D3 
1 L1D2 2 L2D4 3 L3D1 
1 L1D2 2 L2D4 3 L3D2 
1 L1D2 2 L2D4 3 L3D3 
1 L1D3 2 L2D1 3 L3D1 
1 L1D3 2 L2D1 3 L3D2 
1 L1D3 2 L2D1 3 L3D3 
1 L1D3 2 L2D2 3 L3D1 
1 L1D3 2 L2D2 3 L3D2 
1 L1D3 2 L2D2 3 L3D3 
1 L1D3 2 L2D3 3 L3D1 
1 L1D3 2 L2D3 3 L3D2 
1 L1D3 2 L2D3 3 L3D3 
1 L1D3 2 L2D4 3 L3D1 
1 L1D3 2 L2D4 3 L3D2 
1 L1D3 2 L2D4 3 L3D3 

感謝所有誰回答,也給所有誰看的問題。

+0

4個詞語: what have 您試過了嗎? –

+0

給所有對我懷恨在心,不接受答案的人 - 這是我的錯誤。將來會做。 – CocaCola

+0

ElVieejo - 我不想去光標方式。因此我試着用左外連接。 – CocaCola

回答

-1

你想要一個完整的外連接嗎?

嘗試

select 
t.levelNumber1, 
t.levelDesc1, 
t.levelNumber2 , 
t.levelDesc2 , 
t.levelNumber3 , 
t.levelDesc3 
from 
@tblLevelSpreadOut t outer join 
@tblLevelSpreadOut t2 
order by 
t.levelDesc1, 
t.levelDesc2 , 
t.levelDesc3 

此外,考慮接受問題的答案。你會從社區獲得更好的迴應。

+0

我覺得你誤解了我的問題貝絲。 SELECT語句必須位於tblLevels上,這樣tblLevelSpreadOut纔會被填充上面顯示的數據。例如: - levelNumber1 levelDesc1 levelNumber2 levelDesc2 levelNumber3 levelDesc3 ======================================== =========================== 1 L1D1 2 L2D1 3 L3D1 1 L1D1 2 L2D1 3 L3D2 – CocaCola