2015-07-21 132 views
-2

原始表:Cocatenate列唯一

======================================================================================= 
| A |  B |  C  |  D  |  E  |  F  |  G  | 
======================================================================================= 
| 65432 | AFD452E | sometext1 | IA1  | 10,6 | 8,5  | 22,0 | 
| 65432 | AFD452E | sometext1 | IA2  |   | 11,4  | 16,5 | 
| 65432 | AFD452E | sometext1 | IA3  |   | 3,5  | 5,3 | 
| 65989 | 74652E | sometext2 | IA1  | 3,3  |    |  8  | 
| 65989 | 74652E | sometext2 | IA3  | 23  |  1,1  | 6,9 | 
| 27890 | P8965A | sometext3 | IA3  | 12,7 |  13,8 | 33,2 | 
======================================================================================= 

結果表應該是:

======================================================================================= 
| A |  B |  C  |  NEWA1  |  NEWA2  |  NEWA3  | 
======================================================================================= 
| 65432 | AFD452E | sometext1 | 10,6-8,5-22,0-| -11,4-16,5- |     | 
| 65989 | 74652E | sometext2 | 3,3--8-  |    | 23-1,1-6,9- | 
| 27890 | P8965A | sometext3 |    |    | 12,7-13,8-33,2- | 
======================================================================================= 

這就是我想出了這麼遠,但它確實沒有做的工作:

SELECT DISTINCT [A], [B], [C], 
    IIF([D] LIKE "IA1", IIF(ISNULL([E]), '-', [E] + '-') + IIF(ISNULL([F]), '-', [F] + '-') + IIF(ISNULL([G]), '-', [G] + '-') , ‘’) AS NEWIA1, 
    IIF([D] LIKE "IA2", IIF(ISNULL([E]), '-', [E] + '-') + IIF(ISNULL([F]), '-', [F] + '-') + IIF(ISNULL([G]), '-', [G] + '-') , ‘’) AS NEWIA2, 
    IIF([D] LIKE "IA3", IIF(ISNULL([E]), '-', [E] + '-') + IIF(ISNULL([F]), '-', [F] + '-') + IIF(ISNULL([G]), '-', [G] + '-') , ‘’) AS NEWIA3 
    FROM TABLE; 

這是我想出了我的查詢:

======================================================================================= 
| A |  B |  C  |  NEWA1  |  NEWA2  |  NEWA3  | 
======================================================================================= 
| 65432 | AFD452E | sometext1 | 10,6-8,5-22,0-|    |     | 
| 65432 | AFD452E | sometext1 |    | -11,4-16,5- |     | 
| 65432 | AFD452E | sometext1 |    |    | -11,4-16,5- | 
| 65989 | 74652E | sometext2 | 3,3--8-  |    |     | 
| 65989 | 74652E | sometext2 |    |    | 23-1,1-6,9- | 
| 27890 | P8965A | sometext3 |    |    | 12,7-13,8-33,2- | 
======================================================================================= 
+0

我們需要看看你做了什麼。有幾個選項可以幫助您獲得所需的信息。 – ragerory

+0

有人知道如何實現這一點嗎?謝謝。 – Zachs

+0

你在VBA中工作,而不是圖形界面? –

回答

0

試着這麼做:

select A, B, C, 
max(iif([D] like "1A1" .. rest of code)) as newa1, 
e ... 
from table 
group by A, B. c; 

一旦你設置了行,你可以包裝它們的子查詢中,並修剪多餘連字符。

+0

謝謝 但它也給我帶來了行從原來的表,其中列d具有比IA1和IA2和IA3像其他值之前我並沒有顯示進口:| 34432 | P673452 | sometext3 | IA6 | | | | | 55770 | 27799A | sometext4 | IA7 | | | | 當col D不是IA1和IA2和IA3時如何避免行? – Zachs

+0

基本上我想補充說的是,結果列NEWA1和NEWA2和NEWA3不應該全部爲空:或者空或零長度爲同一時間。 – Zachs

+0

我對你們所有人的祝賀都已經完全回答了這個問題。非常感謝所有人! :) SELECT A,B,C,... FROM YourTable WHERE d IN( 'IA1', 'IA2', 'IA3') GROUP BY A,B,C ; – Zachs