2013-02-13 41 views
5

如何使用SQL將多行連接成單行?我的數據庫是DB2如何連接SQL中單個行內的多行?

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

我想是這樣

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

這取決於你正在使用的DBMS。 – 2013-02-13 10:10:12

+0

@MahmoudGamal我正在使用DB2傢伙 – 2013-02-13 10:12:00

+0

對這篇文章的回答並不是我期待的......我想還有很多其他的方法 – 2013-02-13 10:17:12

回答

6

試試這個

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

HERE DEMO SQLFIDDLE

編輯: 在DB2中,你需要創建函數,然後調用它

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 ; 

,然後在這裏稱之爲

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

-1:GROUP_CONCAT是MySql,DB2中不存在 – 2013-02-13 10:21:00

+0

無法使其運行。我認爲DB2_ – 2013-02-13 10:21:51

+0

不支持group_concat嘗試編輯答案 – 2013-02-13 10:33:13

-3

使用此查詢:

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

-1:GROUP_CONCAT是MySql,它不存在於DB2中 – 2013-02-13 10:20:08