従業員情報を保持しているemployeeテーブルがあるとします。
カラムはemployee_id, employee_name, employee_genderです。
今、employeeテーブルに対して下記のSQLを実行しました。
SELECT
employee_id,
employee_name,
employee_gender
FROM
employee
WHERE
employee_gender <> 'female'
ORDER BY
employee_id
この取得結果から、特定の行数のレコードだけ取り出す方法がありますでしょうか。
■例
10という引数が与えられたら、上記SQLの取得結果から、
1~10行目、21~30行目、41~50行目……のように隔10行ずつ取ってきたい。
※11~20行目、31~40行目……は取ってこない
20という引数が与えられたら
1~20行目、41~60行目、81~100行目のように隔20行ずつ取ってきたい。
※21~40行目、61~80行目……は取ってこない
■備考
・1回のSQLで取得したい(上記のSQLに追記する形)
・表のMAXのレコード数は不定
・employee_idは1からの連番
なお、
employee_gender <> 'female' ⇒ この条件が付く前は以下のように取得していました。
SELECT
employee_id,
employee_name,
employee_gender
FROM
employee
WHERE
MOD(TRUNC(employee_id / 引数), 2) = 0
ORDER BY
employee_id
「employee_gender <> 'female'」の条件が付いて、employee_idが使えなくなったため、
並べ替えた結果に、ROWNUMや、ROW_NUMBERで行番号を振って、employee_idの代わりに使おうとしましたが、
ROWNUMやROW_NUMBERでは演算が行えないらしく、どうしようかと思っています。
他に使えそうな関数がある等の情報でも良いのですが、
何か知識をお持ちの方がおられましたらご教示願いたいです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/30 05:54