今回は、SQLのLAG関数で他レコードを参照する方法について解説します。
-- create or replace table1-
create or replace table DB1.PUBLIC.DATA1
(
"id1" VARCHAR(10),
"id2" VARCHAR(10)
);
-- プロシージャ定義
CREATE OR REPLACE PROCEDURE DB1.PUBLIC.INSERT_PROC1()
RETURNS VARCHAR
LANGUAGE SQL
AS
BEGIN
INSERT INTO DB1.PUBLIC.DATA1 VALUES ('1111', '1111');
INSERT INTO DB1.PUBLIC.DATA1 VALUES ('2222', '2222');
INSERT INTO DB1.PUBLIC.DATA1 VALUES ('3333', '3333');
END;
-- プロシージャ呼び出し
CALL DB1.PUBLIC.INSERT_PROC1();


select lag("id1",1) over(order by "id1")
from DB1.PUBLIC.DATA1;

- LAG関数による他レコードの参照
- lag(“id1”,1)・・・他レコードの”id1″の値を参照
- lag(“id1”,1)・・・1レコード手前のレコードを参照
- over(order by “id1”)・・・他レコードを参照する際に、”id1″の並び順で遡る。