LEAD함수 그룹별로 조회하고 싶습니다. 0 3 738

by 유선일 [2018.08.31 14:07:09]


 아래 마농님의 강의를 보고 결과값을 다르게 출력하고 싶은데 어떻게 해야 할까요? 

아래는 강의 내용입니다.

SELECT deptno, empno, sal
     , LAG (sal) OVER(ORDER BY deptno, empno) s_1
     , LEAD(sal) OVER(ORDER BY deptno, empno) s_2
  FROM emp;

-- S_1 : 이전 ROW 의 급여 값을 출력한다.
-- S_2 : 다음 ROW 의 급여 값을 출력한다.
 

  DEPTNO      EMPNO        SAL        S_1        S_2  
-------- ---------- ---------- ---------- ----------
      10       7782       2450                  5000       1300
      10       7839       5000       2450       1300        800
      10       7934       1300       5000        800       2975
      20       7369        800       1300       2975       3000
      20       7566       2975        800       3000       1100
      20       7788       3000       2975       1100       3000
      20       7876       1100       3000       3000       1600
      20       7902       3000       1100       1600       1250
      30       7499       1600       3000       1250       1250
      30       7521       1250       1600       1250       2850
      30       7654       1250       1250       2850       1500
      30       7698       2850       1250       1500        950
      30       7844       1500       2850        950          0
      30       7900        950       1500                     0

 위에 조회된 리스트를 DEPTNO 로 그룹핑해서 아래와 같은 결과값이 나오게 하려면 어떻게 해야 할까요?
어떻게 해야 할지 감이 안잡히는데 조언 부탁드립니다.

감사합니다..^^

DEPTNO      EMPNO   SAL      S1
--------     ---------- ----------  ----------
      10       7782       2450       5000
      10       7839       5000       1300
      10       7934       1300              
      20       7369        800       2975
      20       7566       2975      3000
      20       7788       3000      1100
      20       7876       1100      3000
      20       7902       3000       
      30       7499       1600      1250
      30       7521       1250      1250
      30       7654       1250      2850
      30       7698       2850      1500
      30       7844       1500      

by 잠만보 [2018.08.31 14:32:35]
WITH T AS (
SELECT 10 DEPTNO, 1283 EMPNO FROM DUAL UNION ALL
SELECT 10 DEPTNO, 787 EMPNO FROM DUAL UNION ALL
SELECT 10 DEPTNO, 121 EMPNO FROM DUAL UNION ALL
SELECT 20 DEPTNO, 123 EMPNO FROM DUAL UNION ALL
SELECT 20 DEPTNO, 123122 EMPNO FROM DUAL UNION ALL
SELECT 30 DEPTNO, 2232 EMPNO FROM DUAL
)

SELECT DEPTNO,
       EMPNO,
       LEAD(EMPNO) OVER(PARTITION BY DEPTNO ORDER BY DEPTNO, EMPNO) S_1
  FROM T

 


by 마농 [2018.08.31 14:44:11]
, LEAD(sal) OVER(PARTITION BY deptno ORDER BY empno) s_2

 


by 유선일 [2018.08.31 15:51:41]

LEAD 함수에 PARTITION BY가 들어갈 수 있군요..

ORDER BY 만 있는 줄 알았습니다.

마농님...존경합니다...꾸뻑(__)

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입