SQL将第一个值替换为第二个值

时间:2013-05-11 00:11:36

标签: sql replace ignore skip

我是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的底行中使用空值。

Screenshot

是否可以这样做,声明应该是什么样的?

2 个答案:

答案 0 :(得分:0)

试试这个

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

答案 1 :(得分:0)

这可能有效,具体取决于数据库系统允许的语法:

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