2016-08-01 54 views
0

Ich brauche Hilfe mit einem Problem auf einem IBM Informix 12.10. Datenbank.SQL select - Gruppieren nach und verketten (kein 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'); 

Ich versuchte STUFF, GROUP_CONCAT und LISTAGG.

Initial table: "toys" 

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

Die resultierende Tabelle wie die aussehen soll:

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

Vielen Dank für Ihre Hilfe!

+1

Für welche RDBMS ist das? Bitte fügen Sie ein Tag hinzu, um anzugeben, ob Sie 'mysql',' postgresql', 'sql-server',' oracle' oder 'db2' verwenden - oder etwas ganz anderes. –

+0

Uhm, es ist eine Informix-Datenbank ... Ich weiß im Moment nicht mehr. – LordGhettofaust

+0

Nur ein Tipp, müssen Sie mehr Details zur Verfügung stellen als "nicht funktioniert". Enthalten Sie, was Sie versucht haben, Fehlermeldungen und Codes, etc. Auch scheinbar unbedeutende Details können Informationen liefern, die verwendet werden können, um einem Problem auf den Grund zu gehen. –

Antwort

0

In Oracle funktioniert die listagg() Funktion. Hoffentlich hat Informix eine ähnliche Funktion:

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

Benutzer fehlt Privileg oder Objekt nicht gefunden: LISTAGG :-( – LordGhettofaust

+0

Versuchen Sie das vielleicht? Https://github.com/jOOQ/jOOQ/issues/1276. Sie werden selbst einige Suchen durchführen müssen, um zu versuchen emulieren dies mit der Funktionalität Informix Denken Sie daran, die Antwort auf Post zurück, wenn Sie es für zukünftige Forscher Viel Glück finden –

+0

Hmm „Benutzer fehlt Privileg oder Objekt nicht gefunden: XMLSERIALIZE“.!. 'Produkt auswählen, substr (xmlagg (xmltext (context (',', color))) als varchar (1024)), 3) von toys nach produkt gruppieren ' Der substr sieht meiner Meinung nach komisch aus. – LordGhettofaust