我选择通过一个例子提出这个问题,因为我认为它最清楚地说明了我要做的事情。
说我有下表:
member number time
------ ----- -----
1 2 19:21
1 4 19:24
1 27 19:37
2 4 19:01
2 7 21:56
2 8 22:00
2 21 22:01
如何获取以下栏目?
member number new column
------ ----- ---------
1 2 2.4.27
1 4 2.4.27
1 27 2.4.27
2 4 4.7.8.21
2 7 4.7.8.21
2 8 4.7.8.21
2 21 4.7.8.21
EDIT(S):
我正在使用DB2 SQL。
每个成员的行数不一定相同。
订单由时间决定。
答案 0 :(得分:1)
根据您的db2版本,您可以使用LISTAGG()功能。我认为它包含在9.7之后的任何db2版本中。
示例:
select
member,
number,
listagg(number,',') as new_column
from
tablename
group by
member
答案 1 :(得分:0)
在Oracle中,这将完成这项工作,
select a.member,a.number,b.newcol from table a,(select member,replace(wm_concat(number),',','.') newcol from test11 group by member)b where a.member=b.member;
答案 2 :(得分:0)
我知道回答你自己的问题是不好的,但我找到了这个有用的页面:
修改那里的代码:
create table test (member int, number int, time_stamp time)`;
insert into test values
(1,2,'19:21'),
(1,4,'19:24'),
(1,27,'19:37'),
(2,4,'19:01'),
(2,7,'21:56'),
(2,8,'22:00'),
(2,21,'22:01');
select
member, substr(xmlcast(xmlgroup('.' || number as a order by time_stamp) as varchar(60)), 2)
from test
group by member