Как вывести x элемент y раз в postgresql
Всем привет.
Подскажите плиз:есть таблица вида
-------------
|id|duration|
Как посредством postgresql вывести значение (допустим 1 ), столько раз , сколько содержит значение duration. Например , если duration имеет значение 4, то вывести 1111 И сделать это для всех элементов таблицы , (id 1-100, допустим).
Ответы (2 шт):
Если id не более одного знака - то делаем просто:
select lpad('', t.duration, cast(t.id as varchar(1))) from t
http://sqlfiddle.com/#!15/df3d7/3
lpad дополняет слева строку из первого параметра до длины из второго параметра символом из третьего параметра.
Можно также использовать и rpad, поскольку у нас пустая строка
Если id больше 1 знака - нужно будет посчитать длину конечной строки:
select lpad('', t.duration*length(cast(t.id as varchar)), cast(t.id as varchar)) from t
Например , если duration имеет значение 4, то вывести 1111
Это одна запись, одно поле, и в нём 4 единицы? тогда
SELECT REPEAT(id::text, duration)
FROM source_table
Если же это 4 записи, и у каждой в поле одна единица, то
SELECT id
FROM source_table
CROSS JOIN generate_series(1, (SELECT MAX(duration)
FROM source_table))
WHERE generate_series <= duration