从多个表中置换列以生成新表

时间:2016-04-28 21:54:24

标签: sql sql-server sql-server-2008 automation qa

我正在尝试自动化测试,我们有5个配置表,每个配置表都有一组固定的记录,如:

表1 - 有1列 - 名称:A,B,C,D,E,F,G,H,I,J

表2 - 有1列 - 编号:1,2,3,4,5

表3 - 有1列 - GreekA:Alpha,Beta,Gamma,Delta,Theta

表4 - 有1列 - AAlpha:A1,A2

表5 - 有1列 - 字母:KKK,JJJ,HHH

基于以上所述,我需要从上面的5个表中生成所有可能的排列组合,并填充Table6,它应该包含来自所有上表的所有列以及所有可能值的组合permutated。基本上是所有内容的排列。

我需要使用SQL Server 2008。

1 个答案:

答案 0 :(得分:2)

这将生成包含所有组合的1500行。

DECLARE @tbl1 TABLE([Name] VARCHAR(100));    
INSERT INTO @tbl1 VALUES('A'),('B'),('C'),('D'),('E'),('F'),('G '),('H '),('I '),('J');
DECLARE @tbl2 TABLE([Number] INT);           
INSERT INTO @tbl2 VALUES(1),(2),(3),(4),(5);
DECLARE @tbl3 TABLE([GreekA] VARCHAR(100));  
INSERT INTO @tbl3 VALUES ('Alpha'),('Beta'),('Gamma'),('Delta'),('Theta');
DECLARE @tbl4 TABLE([AAlpha] VARCHAR(100));  
INSERT INTO @tbl4 VALUES ('A1'),('A2');
DECLARE @tbl5 TABLE([Letter] VARCHAR(100));  
INSERT INTO @tbl5 VALUES ('KKK'),('JJJ'),('HHH');

SELECT *
FROM @tbl1
CROSS JOIN @tbl2
CROSS JOIN @tbl3
CROSS JOIN @tbl4
CROSS JOIN @tbl5