2013-02-13 13 views
5

Jak połączyć wiele wierszy w jeden wiersz przy użyciu instrukcji SQL? Moja baza danych DB2Jak połączyć wiele wierszy w jednym wierszu w SQL?

TableFoo 
------- 
Id  Name 
1  Apples 
1  Tomatoes 
1  Potatoes 
2  Banana 
2  Peach 

chcę coś

ID  FruitsAvailable 
------------------------- 
1  Apples, Tomatoes, Potatoes 
+0

To zależy od DBMS używasz. –

+0

@MahmoudGamal Używam DB2 guys –

+0

Odpowiedź na post nie jest tym, na co czekam .. Przypuszczam, że istnieje wiele innych sposobów. –

Odpowiedz

6

spróbować tej

SELECT id ,FruitsAvailable 
    FROM 
     (SELECT id , group_concat(Name) as FruitsAvailable 
     FROM TableFoo 
     WHERE id = 1) t 

HERE DEMO SQLFIDDLE

EDIT: w DB2 trzeba stworzyć funkcję, a następnie wywołać ją

CREATE FUNCTION MySchema/MyUDF (
PARCol2 CHAR(5)) 
RETURNS VARCHAR(1024) 
LANGUAGE SQL 
NOT DETERMINISTIC 
READS SQL DATA 
CALLED ON NULL INPUT 
DISALLOW PARALLEL 

BEGIN 
    DECLARE ReturnVal VARCHAR(1024) NOT NULL DEFAULT ''; 

    FOR CsrC1 AS C1 CURSOR 
     FOR SELECT MyCol1 
      FROM MyTable 
      WHERE MyCol2 = ParCol2 
     DO SET ReturnVal = ReturnVal Concat CsrC1.MyCol1; 
    END FOR; 

    RETURN LTRIM(ReturnVal); 
END ; 

a następnie wywołać ją tutaj

 Select id, MyUDF(Name) as FruitsAvailable 
    From TableFoo 
    where id = 1 
+1

-1: GROUP_CONCAT to MySql, nie istnieje w DB2 –

+0

Nie można go uruchomić. Myślę, że group_concat nie jest obsługiwany w DB2 –

+0

wypróbuj moją zmienioną odpowiedź –

-3

Użyj tego zapytania:

SELECT Id, GROUP_CONCAT(Name SEPARATOR ', ') FROM TableFoo GROUP BY Id; 
+6

-1: GROUP_CONCAT jest MySql, nie istnieje w DB2 –

Powiązane problemy