powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Разделение строк на четные и нечетные
8 сообщений из 8, страница 1 из 1
Разделение строк на четные и нечетные
    #38658472
Andrey78am
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые товарищи программисты, подскажите, пожалуйста как можно распределить значения поля:
+---+------+
| id | Value |
+---+------+
| 1 | a1 |
| 1 | a2 |
| 1 | b1 |
| 1 | b2 |
| 1 | c1 |
| 1 | c2 |
+--+-------+

в отдельные значения:
+---+--------+-------+
| id | Value1 | Value2 |
+---+--------+-------+
| 1 | a1 | a2 |
| 1 | b1 | b2 |
| 1 | c1 | c2 |
+--+--------+--------+
...
Рейтинг: 0 / 0
Разделение строк на четные и нечетные
    #38659181
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey78am,

Приложите пример с более реальными данными, в частности типами столбцов Value, это числа, строки или что? a1 и a2 это строковые выражения с индексами в конце? Если нет имеют ли что-то общее между собой?
...
Рейтинг: 0 / 0
Разделение строк на четные и нечетные
    #38659205
Andrey78am
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VSVLAD, вот реальные данные таблицы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
+---------------------+--------------------+
|         ID          |       VALUE        |
+---------------------+--------------------+
| 9137375360013613886 |  23.2670988996472  |
| 9137375360013613886 |  42.7594658142997  |
| 9137375360013613886 |  23.2750530272498  |
| 9137375360013613886 |  42.7641103791151  |
| 9137375360013613886 |  23.2738524042155  |
| 9137375360013613886 |  42.784453862693   |
| 9137375360013613886 |  23.2725767422415  |
| 9137375360013613886 |  42.789704484083   |
| 9137375360013613886 |  23.2550926693036  |
| 9137375360013613886 |  42.8124151617245  |
+---------------------+--------------------+
где ID - Number, а VALUE - Char

на выходе мне нужно получить следующий формат данных:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
+---------------------+--------------------+--------------------+
|         ID          |      VALUE_1       |      VALUE_2       |
+---------------------+--------------------+--------------------+
| 9137375360013613886 |  23.2670988996472  |  42.7594658142997  |
| 9137375360013613886 |  23.2750530272498  |  42.7641103791151  |
| 9137375360013613886 |  23.2738524042155  |  42.784453862693   |
| 9137375360013613886 |  23.2725767422415  |  42.789704484083   |
| 9137375360013613886 |  23.2550926693036  |  42.8124151617245  |
+---------------------+--------------------+--------------------+
...
Рейтинг: 0 / 0
Разделение строк на четные и нечетные
    #38659225
перенумеровать + взять остаток от деления на 2 - для разделения записей на первый-второй
case + group by - для разворота в два столбца...
...
Рейтинг: 0 / 0
Разделение строк на четные и нечетные
    #38659244
Andrey78am
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что должно быть в case ?
Для разделения я пытаюсь использовать
Код: plsql
1.
mod(t1.row_number() over(order by level), 2) = 1


для выбора четных строк и
Код: plsql
1.
mod(t2.row_number() over(order by level), 2) = 0


для нечетных
из двух подзапросов n1 и n2. но при попытке объединить их как join по полю ID, он не объединяет и делает умножение массива на массив.
...
Рейтинг: 0 / 0
Разделение строк на четные и нечетные
    #38659245
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Разделение строк на четные и нечетные
    #38659257
Andrey78am
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот реальный запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
select n1.object_id,
       n1.sdo_coordinates as coord1,
       n2.sdo_coordinates as coord2
  -- разбиедие строки значений, разделенных символом "," в отдельные строки
  from (SELECT to_number(x.object_id) as object_id,
               REGEXP_SUBSTR(x.SDO_ORDINATES, '[^,;]+', REGEXP_INSTR(x.SDO_ORDINATES, '[^,;]+', 1, LEVEL, 0), 1) sdo_coordinates,
               row_number() over(order by level) order_number
          --выбор значения поля msys.GEOMETRY таблицы nc_spatial географических координат и преобразование их в строку
          FROM (SELECT t.object_id,
                       (SELECT to_char(wm_concat(column_value))
                          FROM TABLE(t.geometry.SDO_ORDINATES)) SDO_ORDINATES
                  FROM nc_spatial t
                 WHERE t.object_id IN (9137375360013613886)) x
        CONNECT BY REGEXP_INSTR(x.SDO_ORDINATES, '[^,;]+', 1, LEVEL) > 1) n1,
       (SELECT to_number(y.object_id) as object_id,
               REGEXP_SUBSTR(y.SDO_ORDINATES, '[^,;]+', REGEXP_INSTR(y.SDO_ORDINATES, '[^,;]+', 1, LEVEL, 0), 1) sdo_coordinates,
               row_number() over(order by level) order_number
          FROM (SELECT t.object_id,
                       (SELECT to_char(wm_concat(column_value))
                          FROM TABLE(t.geometry.SDO_ORDINATES)) SDO_ORDINATES
                  FROM nc_spatial t
                 WHERE t.object_id IN (9137375360013613886)) y
        CONNECT BY REGEXP_INSTR(y.SDO_ORDINATES, '[^,;]+', 1, LEVEL,0) > 0) n2
 where n1.object_id = n2.object_id
   and mod(n1.order_number, 2) = 1
   and mod(n2.order_number, 2) = 0



и вместо выходных данных:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
+---------------------+--------------------+--------------------+
|         ID          |      VALUE_1       |      VALUE_2       |
+---------------------+--------------------+--------------------+
| 9137375360013613886 |  23.2670988996472  |  42.7594658142997  |
| 9137375360013613886 |  23.2750530272498  |  42.7641103791151  |
| 9137375360013613886 |  23.2738524042155  |  42.784453862693   |
| 9137375360013613886 |  23.2725767422415  |  42.789704484083   |
| 9137375360013613886 |  23.2550926693036  |  42.8124151617245  |
+---------------------+--------------------+--------------------+

я получаю набор данных:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
+---------------------+--------------------+--------------------+
|         ID          |      VALUE_1       |      VALUE_2       |
+---------------------+--------------------+--------------------+
| 9137375360013613886 |  23.2670988996472  |  42.7594658142997  |
| 9137375360013613886 |  23.2750530272498  |  42.7594658142997  |
| 9137375360013613886 |  23.2738524042155  |  42.7594658142997  |
| 9137375360013613886 |  23.2725767422415  |  42.7594658142997  |
| 9137375360013613886 |  23.2550926693036  |  42.7594658142997  |
| 9137375360013613886 |  23.2670988996472  |  42.7641103791151  |
| 9137375360013613886 |  23.2750530272498  |  42.7641103791151  |
| 9137375360013613886 |  23.2738524042155  |  42.7641103791151  |
| 9137375360013613886 |  23.2725767422415  |  42.7641103791151  |
| 9137375360013613886 |  23.2550926693036  |  42.7641103791151  
... ... ... ... ...
+---------------------+--------------------+--------------------+
...
Рейтинг: 0 / 0
Разделение строк на четные и нечетные
    #38659266
Andrey78am
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, да, база данных Oracle. Ошибся топиком))
Перенес в правильную подтему.
У кого есть возможность, закройте, плиз, текущий топик
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Разделение строк на четные и нечетные
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]