1

私は SQL クエリを初めて使用します。次の列を選択しようとしています。

pm_name、party、yr_comm、および yr_left。

最初の 3 列にデータがあり、yr_left を作成するために、yr_comm にエイリアスを指定しました。

SELECT ステートメントでサブクエリを使用して yr_left の最初の値をスキップしようとしましたが、サブクエリが複数の行を返すというエラーが発生しました。

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 を 2 番目などに置き、yr_left の一番下の行に null 値を設定することです。

スクリーンショット

これを行うことは可能ですか?ステートメントはどのように表示されますか?

4

2 に答える 2

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
于 2013-05-11T00:59:40.660 に答える
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
于 2013-05-11T00:35:43.253 に答える