SQL Заменить первое значение столбца вторым значением
Я новичок в запросах SQL, я пытаюсь выбрать следующие столбцы:
pm_name, party, yr_comm и yr_left.
У меня есть данные в первых 3 столбцах, и для создания yr_left я дал yr_comm с псевдонимом.
Я попытался использовать подзапрос в статистике SELECT, чтобы пропустить первое значение в yr_left, но я получил сообщение о том, что подзапрос возвращает более 1 строки:
SELECT pm_name, party, yr_comm,
(SELECT yr_comm FROM ministry WHERE yr_comm <> "1901") AS yr_left
FROM ministry
WHERE party <> "Labor"
Что мне нужно сделать, это заменить первое значение в yr_left 1901 на 1903, но оставить остаток первой строки, поместить 1904, intp второй и т. Д. И иметь нулевое значение в нижнем ряду yr_left.
Можно ли это сделать, и как должно выглядеть утверждение?
2 ответа
Это может работать, в зависимости от синтаксиса вашей системы баз данных:
SELECT m.pm_name, m.party, m.yr_comm,
(SELECT min(x.yr_comm)
FROM ministry as x
WHERE x.yr_comm > m.yr_comm
) as yr_left
FROM ministry as m
ORDER by m.yr_comm
Попробуй это
WITH mtable AS (
SELECT pm_name, party, yr_comm, rownum
FROM ministry WHERE party <> "Labor" ORDER BY yr_comm
) SELECT m.pm_name, m.party, m.yr_comm, (
SELECT mm.yr_comm FROM mtable mm WHERE mm.rownum = m.rownum + 1
) AS yr_left
FROM mtable m