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
Другие вопросы по тегам