这是我table:
| 识别码|序列号|起始日期|终止日期|注解|
| - -|- -|- -|- -|- -|
| 元素1|一个|2022年4月1日|2023年3月31日|第一部分|
| 元素1| 2个|2022年4月1日|2023年3月31日|第二部分|
| 元素1|三个|2022年4月1日|2023年3月31日|第三部分|
| 元件2|一个|2018年11月12日|二〇九九年十二月三十一日|第一部分|
| 元件2| 2个|2018年11月12日|二〇九九年十二月三十一日|第二部分|
| 元件2|三个|2018年11月12日|二〇九九年十二月三十一日|第三部分|
| 元件2|四个|2018年11月12日|二〇九九年十二月三十一日|第四部分|
我想通过合并和连接SEQ
和NOTES
来返回每个ID
,这样我只选择ID
、DATE_FROM
、DATE_TO
和NOTES
,如下所示:
| 识别码|起始日期|终止日期|注解|
| - -|- -|- -|- -|
| 元素1| 2022年4月1日|2023年3月31日|第二部分第三部分|
| 元件2| 2018年11月12日|二〇九九年十二月三十一日|第一部分第二部分第三部分第四部分|
然后,我会将该结果插入到另一个表中!
我尝试使用GROUP BY
,但我不擅长SQL查询,也不知道如何使用它:
SELECT ID, DATE_FROM, DATE_TO, NOTES
FROM MYTABLE
GROUP BY ID, NOTES
谢谢
3条答案
按热度按时间vsikbqxv1#
如果LISTAGG不可用,则可能是递归CTE。以下查询依赖于
查询:
DB<>Fiddle
ar5n3qh52#
由于它已经写在评论中,你需要使用LISTAGG函数。我不知道你是如何使用它的,但它应该为你工作。
Here is the demo
下面是该演示的代码:
请注意您在group by中使用了哪些列。您不能在listagg函数中使用按列分组注解。
如果您的标题是正确的“Select and merge multiple columns in DB2”,那么您可以如下连接两个列:
但你已经向我们展示了你想要的结果,我们可以假设你不想这样...
v9tzhpje3#
SQLCODE = -4700:
说明
在激活所需的函数级别之前,尝试使用新功能。在激活Db2函数级别之前,不能使用该函数级别中引入的功能。
看起来,您使用的是Z/OS 12的Db2(而不是您提到的LUW www.example.com的Db210.5.0.9),其中LISTAGG与
FL501
一起可用,而FL501
在您的系统中没有激活。尝试XMLAGG作为替代。如果您取消注解掉的块,这应该可以正常工作。