2015-04-04 98 views
0

我需要輸出1列,其中包含4列中的所有可能的字符串組合,並連接並使用T-SQL查詢或Excel公式刪除空格。連接並從4列刪除空格

詳細信息: 我有一張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

作爲TRIM(與CONCATENATE)只刪除串聯字符串之間的空間,你不還需要一種刪除中間字符串空格的方法? – 2015-04-04 20:38:18

+0

空格中間字符串很好,只是它們周圍的空格。例如,如果其中一個字符串是「準備好」,我只需要它顯示「準備就緒」。 – Peter 2015-04-04 20:59:23

回答

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 
+0

代碼的第一部分需要輸入字符串?我如何從字符串中獲取現有表中的字符串? – Peter 2015-04-04 21:10:56

+0

你在說我如何創建#yourtable? – Stephan 2015-04-04 21:12:28

+0

上面的代碼很好用!但是因爲我已經在我的數據庫中存儲了4x4表格,有沒有辦法讓我避免輸入這些值? – Peter 2015-04-04 21:19:45