如何在SQL中连接一行中的多行?
如何使用SQL将多行连接成一行?我的数据库是DB2如何在SQL中连接一行中的多行?,sql,db2,Sql,Db2,如何使用SQL将多行连接成一行?我的数据库是DB2 TableFoo ------- Id Name 1 Apples 1 Tomatoes 1 Potatoes 2 Banana 2 Peach 我想要像这样的东西 ID FruitsAvailable ------------------------- 1 Apples, Tomatoes, Potatoes 试试这个 SEL
TableFoo
-------
Id Name
1 Apples
1 Tomatoes
1 Potatoes
2 Banana
2 Peach
我想要像这样的东西
ID FruitsAvailable
-------------------------
1 Apples, Tomatoes, Potatoes
试试这个
SELECT id ,FruitsAvailable
FROM
(SELECT id , group_concat(Name) as FruitsAvailable
FROM TableFoo
WHERE id = 1) t
编辑:
在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
使用此查询:
SELECT Id, GROUP_CONCAT(Name SEPARATOR ', ') FROM TableFoo GROUP BY Id;
这取决于您使用的数据库管理系统。@MahmoudGamal我使用的是DB2 Guy帖子上的答案不是我所期望的。。我想还有很多其他的ways@DanielHilgarth:GROUP_CONCAT在DB2中工作吗?@AndriyM:你是对的,它似乎不存在。-1:GROUP_CONCAT是MySql,它在DB2中不存在-1:GROUP_CONCAT是MySql,它在DB2Can中不存在,它无法工作。我认为db2tanks不支持group_concat!有必要使用光标吗?我对此有问题,不管我给它什么,函数都会不断返回“+++++++++++++++++”,我尝试改变了很多东西,但它总是这样做。有人有什么想法吗?@cbmeek这是一个客户的数据库。他们已经否认转换,并像胶水一样坚持。在我的最后一条评论发布几天后,我找到了一个解决办法,希望我能记住它是什么,这样我就可以与全世界分享它。