2012-10-25 45 views
4

源數據:的concat值轉換成一組

COLA COLB COLC 
1  BO  AFV 
1  BO  AKG 
1  BO  UYD 
2  BOS KJHSDKJ 
2  BOS YWI 
3  POS JHSFJH 
3  POS IUXN 

我期望的結果是如下:

COLA COLB COLC 
1  BO  AFV, AKG,UYD 
2  BOS  KJHSDKJ,YWI 
3  POS  JHSFJH,IUXN 

COLA,COLB是鍵列。

回答

3

這裏是一個遞歸查詢,將做的工作:

WITH RECURSIVE REC_VIEW (COLA, COLB, ROLL_UP, COLC) 
AS 
(
SELECT COLA 
    , COLB 
    , MIN(COLC) (VARCHAR(1000)) 
    , MIN(COLC) 
FROM your_table 
GROUP BY 1,2 
UNION ALL 
SELECT B.COLA 
    , B.COLB 
    , B.ROLL_UP || ',' || A.COLC 
    , A.COLC 
FROM your_table A 
INNER JOIN REC_VIEW B 
ON A.COLA = B.COLA 
    AND A.COLB = B.COLB 
    AND A.COLC > B.COLC 
) 

SELECT COLA, COLB, ROLL_UP as COLC 
FROM REC_VIEW 

QUALIFY ROW_NUMBER() OVER (PARTITION BY COLA, COLB 
          ORDER BY CHARACTER_LENGTH(ROLL_UP) DESC) = 1 

我想我明白如何更好地格式化的答案;我所有的「漂亮」間距都消失了。希望這是明確的。

+0

格式看起來不錯Bob。 –

+0

謝謝你讓我知道!有些東西與我的IE 8副本(由我們尊敬的IT部門定製)完全混爲一談。我只是用Chrome瀏覽了一遍,發現它的格式正確。猜猜我會更頻繁地使用Chrome瀏覽器! – BellevueBob

+0

不客氣!我只在必要時才使用IE,而且通常只使用Outlook Web Access。 :) –

1

這是樣本的link

它有一些樣本數據和一個實際的查詢。