Rumah  >  Soal Jawab  >  teks badan

Dapatkan sepasang rekod daripada kumpulan mengikut klausa

Saya mempunyai beberapa jadual daripada jadual ini dan saya menggunakan jadual ini untuk mendapatkan rekod

string_agg(a2.sampl_no, ', ') as sampl_nos

dan kumpulan mengikut klausa berfungsi dengan baik, tetapi saya mahu mempunyai paling banyak 4 sampel_tiada agregat setiap baris.

Andaikan saya mendapat

daripada pangkalan data
string_agg as (0001, 0002, 0003, 0004, 0005, 0006)

Berturut-turut tetapi saya mahu ini

(0001, 0002, 0003, 0004) (0006, 0007).

Bantu saya selesaikan masalah ini.

P粉195402292P粉195402292233 hari yang lalu432

membalas semua(1)saya akan balas

  • P粉564192131

    P粉5641921312024-02-04 15:08:29

    Jika anda ingin melakukan ini dalam pangkalan data, anda boleh menggunakan row_number() 将记录分成四组,然后使用 string_agg():

    select * from rec_agg;
    ┌───────────┐
    │ sample_no │
    ├───────────┤
    │ 0001      │
    │ 0002      │
    │ 0003      │
    │ 0004      │
    │ 0005      │
    │ 0006      │
    │ 0007      │
    │ 0008      │
    │ 0009      │
    │ 0010      │
    │ 0011      │
    └───────────┘
    (11 rows)
    
    
    with mk_grp as (
      select *, ((row_number() over (order by sample_no)) - 1) / 4 as grp 
        from rec_agg
    ) 
    select string_agg(sample_no, ' ,') 
      from mk_grp 
     group by grp ;
    ┌────────────────────────┐
    │       string_agg       │
    ├────────────────────────┤
    │ 0001 ,0002 ,0003 ,0004 │
    │ 0009 ,0010 ,0011       │
    │ 0005 ,0006 ,0007 ,0008 │
    └────────────────────────┘
    (3 rows)

    balas
    0
  • Batalbalas