2016-08-01 56 views
0

我需要IBM Informix 12.10上的問題幫助。數據庫。SQL選擇 - 分組依據和連接(無group_concat)

CREATE TABLE toys(product VARCHAR(255), colour VARCHAR(255)); 
INSERT INTO toys (product, colour) 
VALUES ('balloon', 'red'), 
('balloon', 'white'), 
('balloon', 'green'), 
('balloon', 'yellow'), 
('rubber duck', 'yellow'), 
('rubber duck', 'white'); 

我試過了STUFF,GROUP_CONCAT和LISTAGG。

Initial table: "toys" 

product  | colour 
----------------------- 
balloon  | red 
balloon  | green 
balloon  | white 
balloon  | yellow 
rubber duck | yellow 
rubber duck | white 

結果表應該像這樣:

product  | colours 
----------------------- 
balloon  | red, green, white, yellow 
rubber duck | yellow, white 

非常感謝您的幫助!

+1

哪個RDBMS是這樣的?請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。 –

+0

呃,它是一個Informix數據庫......我現在不知道更多。 – LordGhettofaust

+0

只是一個提示,你需要提供比「不工作」更多的細節。包括您嘗試的內容,錯誤消息和代碼等。即使看似微不足道的細節也可以提供可用於解決問題底部的信息。 –

回答

0

在Oracle中,listagg()函數可以解決這個問題。希望Informix具有類似的功能:

SQL> column PRODUCT format A20 
SQL> column COLOURS format A40 
SQL> with tbl(product, colour) as (
    select 'balloon', 'red' from dual union 
    select 'balloon', 'green' from dual union 
    select 'balloon', 'white' from dual union 
    select 'balloon', 'yellow' from dual union 
    select 'rubber duck', 'yellow' from dual union 
    select 'rubber duck', 'white' from dual 
    ) 
    select product, listagg(colour, ', ') within group (order by colour) as colours 
    from tbl 
    group by product; 

PRODUCT    COLOURS 
-------------------- ---------------------------------------- 
balloon    green, red, white, yellow 
rubber duck   white, yellow 

SQL> 
+0

用戶缺少特權或找不到對象:LISTAGG :-( – LordGhettofaust

+0

試試這也許嗎?https://github.com/jOOQ/jOOQ/issues/1276。您也必須自己做一些搜索以嘗試使用Informix提供的功能效仿這一記住,一旦你發現它對於未來的搜索後回來,答案好運 –

+0

嗯 「用戶缺少特權或找不到對象:XMLSERIALIZE」。!。 '選擇產品, SUBSTR( xmlserialize(xmlagg(xmltext(concat(','color)))as varchar(1024)),3) from toys group by product' substr在我看來很奇怪。 – LordGhettofaust