Coalescing values in a column over a partition

前端 未结 3 1733
悲哀的现实
悲哀的现实 2021-01-06 18:45

I have chosen to ask this question via an example as I think it most clearly illustrates what I am trying to do.

Say I have the following table:

mem         


        
相关标签:
3条回答
  • 2021-01-06 19:07

    In Oracle this will do the job,

    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;
    
    0 讨论(0)
  • 2021-01-06 19:10

    depending on your version of db2, the LISTAGG() function may be available to you. i think it is included in any db2 version after 9.7.

    example:

    select
      member,
      number,
      listagg(number,',') as new_column
    from
      tablename
    group by
      member
    
    0 讨论(0)
  • 2021-01-06 19:13

    I know it's bad form answering your own question but I have found this useful page:

    https://www.ibm.com/developerworks/mydeveloperworks/blogs/SQLTips4DB2LUW/entry/aggregating_strings42?lang=en

    Modifying the code there gives:

    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
    
    0 讨论(0)
提交回复
热议问题