Dapatkan sepasang rekod daripada kumpulan mengikut klausa
P粉195402292
P粉195402292 2024-02-04 00:15:13
0
1
472

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粉195402292
P粉195402292

membalas semua(1)
P粉564192131

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)
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan