连接并从4列中删除空格

时间:2015-04-04 19:34:38

标签: sql sql-server excel tsql

我需要输出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

1 个答案:

答案 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