죄송합니다 질문 내용이 부족했네요 결과값은 아래 표형식대로 데이터가 나오면 될듯합니다
예1 OP_RULE_CD 1001값이 들어오면 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1001 | 1 | 1 | 1 | ||
1002 | 1 | 2 | 2 | ||
1003 | 1 | 1 | 3 | ||
1004 | 1 | 2 | 4 | ||
결과값 예1 OP_RULE_CD 1001값이 들어오면 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1001 | 1 | 1 | 1 | ||
1002 | 1 | 2 | 2 | ||
1003 | 1 | 2 | 3 | ||
예2 OP_RULE_CD 1001값이 들어오면 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1001 | 1 | 1 | 1 | ||
1002 | 1 | 2 | 2 | ||
1003 | 1 | 1 | 3 | ||
1004 | 1 | 2 | 4 | ||
예2 결과값 OP_RULE_CD 1001값 들어오면 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1001 | 1 | 1 | 1 | ||
1002 | 1 | 2 | 2 | ||
예3 OP_RULE_CD 1001값이 들어오면 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1001 | 1 | 1 | 1 | ||
1002 | 1 | 2 | 2 | ||
1003 | 1 | 2 | 3 | ||
1004 | 1 | 2 | 4 | ||
예3 OP_RULE_CD 1001값이결과값 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1001 | 1 | 1 | 1 | ||
1002 | 1 | 2 | 2 | ||
1003 | 1 | 2 | 3 | ||
1004 | 1 | 2 | 4 | ||
예4 OP_RULE_CD 1003값이 들어오면 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1001 | 1 | 1 | 1 | ||
1002 | 1 | 2 | 2 | ||
1003 | 1 | 1 | 3 | ||
1004 | 1 | 2 | 4 | ||
예4 OP_RULE_CD 1003 결과값 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1003 | 1 | 2 | 3 | ||
1004 | 1 | 2 | 4 |
ㅜㅜ두분 정말 죄송합니다. 데이터 값을 잘못올렸네요 수정해서 다시 올립니다.
설명: 데이터 OP_RULE_CD값은 아무거나 들어올수 있으며 거기중에서 RULE_CD값이 1은 처음부분은 조회되며
RULE_CD값이 중간에 1이 있으면 1부터는 안가져오는걸 할려고하는 겁니다. RULE_CD는 1,2는 1번은 수동실행이냐 2번은 자동실행이냐의 여부이며 데이터는 항상 바뀔수가 있습니다.
예1 OP_RULE_CD 1001값이 들어오면 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1001 | 1 | 1 | 1 | ||
1002 | 1 | 2 | 2 | ||
1003 | 1 | 2 | 3 | ||
1004 | 1 | 1 | 4 | ||
결과값 예1 OP_RULE_CD 1001값이 들어오면 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1001 | 1 | 1 | 1 | ||
1002 | 1 | 2 | 2 | ||
1003 | 1 | 2 | 3 | ||
예2 OP_RULE_CD 1001값이 들어오면 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1001 | 1 | 1 | 1 | ||
1002 | 1 | 2 | 2 | ||
1003 | 1 | 1 | 3 | ||
1004 | 1 | 2 | 4 | ||
예2 결과값 OP_RULE_CD 1001값 들어오면 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1001 | 1 | 1 | 1 | ||
1002 | 1 | 2 | 2 | ||
예3 1001값이 들어오면 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1001 | 1 | 1 | 1 | ||
1002 | 1 | 2 | 2 | ||
1003 | 1 | 2 | 3 | ||
1004 | 1 | 2 | 4 | ||
예3 결과값 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1001 | 1 | 1 | 1 | ||
1002 | 1 | 2 | 2 | ||
1003 | 1 | 2 | 3 | ||
1004 | 1 | 2 | 4 | ||
예4 OP_RULE_CD 1003값이 들어오면 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1001 | 1 | 1 | 1 | ||
1002 | 1 | 2 | 2 | ||
1003 | 1 | 1 | 3 | ||
1004 | 1 | 2 | 4 | ||
예4 OP_RULE_CD 1003 결과값 | |||||
OP_RULE_CD | SW | RULE_CD | LAG | LEAD | ROWNUM |
1003 | 1 | 1 | 3 | ||
1004 | 1 | 2 | 4 |
예시 자료가 정확하지 않은 것 같습니다.
입력 받는 OP_RULE_CD 값부터 시작해서 OP_RULE_CD 값이 1씩 증가하는 데이터를 가지고오되
RULE_CD가 1인 데이터를 만나면 더이상 데이터를 가지고 오지 않게 하시려는 것 같네요.
WITH T AS ( SELECT 1001 OP_RULE_CD, 1 SW, 1 RULE_CD FROM DUAL UNION ALL SELECT 1002 OP_RULE_CD, 1 SW, 2 RULE_CD FROM DUAL UNION ALL SELECT 1003 OP_RULE_CD, 1 SW, 1 RULE_CD FROM DUAL UNION ALL SELECT 1004 OP_RULE_CD, 1 SW, 2 RULE_CD FROM DUAL ) SELECT * FROM ( SELECT OP_RULE_CD, SW, RULE_CD, SUM(FG) OVER(ORDER BY OP_RULE_CD) FG FROM ( SELECT OP_RULE_CD, SW , RULE_CD , DECODE(DECODE(OP_RULE_CD,:OP_RULE_CD,1,RULE_CD),1,1) FG FROM T WHERE OP_RULE_CD >= :OP_RULE_CD ) ) WHERE FG = 1
WITH T AS ( SELECT 1001 OP_RULE_CD, 1 SW, 1 RULE_CD FROM DUAL UNION ALL SELECT 1002 OP_RULE_CD, 1 SW, 2 RULE_CD FROM DUAL UNION ALL SELECT 1003 OP_RULE_CD, 1 SW, 1 RULE_CD FROM DUAL UNION ALL SELECT 1004 OP_RULE_CD, 1 SW, 2 RULE_CD FROM DUAL ) SELECT * FROM (SELECT OP_RULE_CD, SW, RULE_CD, ROW_NUMBER() OVER(ORDER BY OP_RULE_CD) RN FROM T) START WITH OP_RULE_CD = :OP_RULE_CD CONNECT BY PRIOR RN + 1 = RN AND RULE_CD != '1'