Строки в значения, разделенные запятыми, основанные на количестве значений - PullRequest
1 голос
/ 16 апреля 2020

Поскольку существует ограничение длины списка значений

Мне нужно преобразовать строки в список значений максимум из 2400 строк и оставить их в следующем списке значений

Это возможно в SQL?

Приведенный ниже запрос преобразует все строки в один список. API не принимает, если длина списка значений превышает 2400 значений

       select listagg(id, ',')  as id_list from table;

Пример

Если в таблице 30 строк, то первые 10 должны go в одном списке значений, вторые 10 строк должны go во втором списке значений, а остальные значения - в последнем списке значений

1 Ответ

1 голос
/ 17 апреля 2020
with data as (
    select row_number()over(order by seq8()) as rn
    from table(generator(rowcount=>10000))
)
select listagg(rn, ',') as list
from data;

показать, что нет предела ... но это не так полезно.

, поэтому для выполнения требуемого бэкетинга

with data as (
    select row_number()over(order by seq8()) as rn
    from table(generator(rowcount=>10000))
)
select listagg(rn, ',') within group (order by rn) as list
from data
group by floor(rn/2400)
order by 1;

дает вам пять строк (усечение сделано мной , просто чтобы показать, как данные разделены, как вы просили)

LIST
1,2,3,4,5,6,7,8,9,10,11,12,13,...
2400,2401,2402,2403,2404,2405,...
4800,4801,4802,4803,4804,4805,...
7200,7201,7202,7203,7204,7205,...
9600,9601,9602,9603,9604,9605,...
...