Изменить значения строк в таблице из запроса
Есть таблица с одним строковым столбцом, полученная запросом
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
Наличие ORDER BY в описании окна - обязательно, иначе "каждая вторая" окажется "какая попало".
Не обратил внимания на СУБД. Для PostgreSQL это будет так:
SELECT CASE WHEN ROW_NUMBER() OVER (ORDER BY id) % 2 = 0
THEN str
ELSE REVERSE(str)
END
FROM source_table