Изменить значения строк в таблице из запроса

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

SELECT
    str
FROM /*код получения таблицы*/

ну или можно со счетчиком строки, если так удобнее

SELECT
    ROW_NUMBER() OVER () AS NUM, str

Нужно каждую вторую строку из str заменить на другую и вывести новую полученную таблицу. Как это можно сделать?


Ответы (1 шт):

Автор решения: Akina

Ну например так:

SELECT CASE WHEN ROW_NUMBER() OVER (ORDER BY id) MOD 2
            THEN str
            ELSE REVERSE(str)
            END
FROM source_table

fiddle

Наличие ORDER BY в описании окна - обязательно, иначе "каждая вторая" окажется "какая попало".


Не обратил внимания на СУБД. Для PostgreSQL это будет так:

SELECT CASE WHEN ROW_NUMBER() OVER (ORDER BY id) % 2 = 0
            THEN str
            ELSE REVERSE(str)
            END
FROM source_table

fiddle

→ Ссылка