2012-10-04 138 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