我需要输出1列,其中包含来自4列的所有可能的字符串组合,连接并使用T-SQL查询或Excel公式删除空格。
详细信息: 我有一个4行4列的表填充各种不同长度的字符串。我需要输出每列中所有可能的字符串组合。因为我有一个4x4表,我期待256种不同的组合。
幸运的是,我可以使用此SQL查询执行此操作:
select
t1.A,
t2.B,
t3.C,
t4.D
from
table t1 cross join
table t2 cross join
table t3 cross join
table t4
然而,这给了我一个4列的输出。我需要连接结果并删除任何空格。
现在,我使用上面的SQL查询,然后将结果复制并粘贴到Excel中。从Excel中,我将使用TRIM和CONCATENATE函数来获取我需要的单个列。
使用T-SQL查询有一种简单的方法吗? 更好的是,我可以使用Excel公式来做到这一点吗?
我使用的是Excel公式,但它仅适用于2列。一旦我从2列中获得组合,我将其复制并粘贴到另一个工作表,将第3列的值输入到新工作表中并使用相同的公式。不知道如何将其扩展到4列。
IF(ROW()-ROW($F$1)+1>COUNTA(A:A)*COUNTA(B:B),"",INDEX(A:A,INT((ROW()-ROW($F$1))/COUNTA(B:B)+1))&INDEX(B:B,MOD(ROW()-ROW($F$1),COUNTA(B:B))+1))
编辑:
示例表:
A B C D
-----------
01 02 03 04
05 06 07 08
09 10 11 12
13 14 15 16
期望的结果:
Results
--------
01020304
01020308
01020312
01020316
........
13141512
13141516
答案 0 :(得分:1)
SELECT CONCAT(RTRIM(LTRIM(A.col1)),RTRIM(LTRIM(B.col2)),RTRIM(LTRIM(C.col3)),RTRIM(LTRIM(D.col4)))
FROM yourTable A
CROSS JOIN yourTable B
CROSS JOIN yourTable C
CROSS JOIN yourTable D