Я пытаюсь перебрать последовательность чисел, чтобы заполнить метки в JasperSoft, используя SQL. У меня есть три разных столбца, и я буду использовать разные диапазоны значений для определения каждого числа. Проблема заключается в том, что мне нужно, чтобы эти ярлыки были быстро обрезаны и сложены по порядку. Например, если я создаю набор меток с номерами от 101 до 200, окончательный набор меток должен выглядеть следующим образом:
Page 1: | 101 | 134 | 167 |
Page 2: | 102 | 135 | 168 |
Page 3: | 103 | 136 | 169 |
Page 4: | 104 | 137 | 170 |
...
Page 32: | 132 | 165 | 198 |
Page 33: | 133 | 166 | 199 |
Page 34: | * | * | 200 |
Однако я не получаю точную и последовательную строку цифр. Иногда я получаю повторяющиеся числа (в примере выше, первые два поля на странице 34 будут 134 и 167, которые являются дубликатами. Кроме того, есть проблема и с моим делением, потому что, если я распечатаю только 1- 3, я получаю это:
| 1 | 1 | 1 |
Кроме того, много раз я не получу окончательное значение; например, если я выберу 1-167.
Вот мой код:
select lpad(num::text, 13, '0') value1
, lpad((num+ ($P{RangeEnd}-$P{RangeStart})/3)::text, 13, '0') value2
, lpad(( num+ 2*($P{RangeEnd}-$P{RangeStart})/3)::text, 13, '0')
value3
from generate_series( $P{RangeStart},($P{RangeEnd}-$P{RangeStart})/3+
$P{RangeStart} ) num
Примечание. Это моя первая попытка составить отчет. По профессии я разработчик Swift / Java. Я даже не уверен, как работает эта программа. Я просто не могу представить, что в SQL нет способа сделать это.