Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. DROP TABLE COC PURGE;
  2.  
  3. CREATE TABLE COC AS
  4. WITH A AS (
  5. SELECT
  6. EMPNO, JOB
  7. , CONNECT_BY_ROOT(SAL) S
  8. , CONNECT_BY_ROOT(EMPNO) N
  9. , CONNECT_BY_ROOT(DEPTNO) P
  10. , LEVEL LVL
  11. FROM EMP CONNECT BY MGR = PRIOR EMPNO
  12. ), B AS (
  13. SELECT EMPNO, JOB
  14. , S, N, P
  15. , MAX(LVL)OVER(PARTITION BY EMPNO) LVL
  16. , MAX(LVL)OVER(PARTITION BY EMPNO) - LVL D
  17. FROM A
  18. )
  19. SELECT * FROM B
  20. PIVOT(MAX(S) S, MAX(N) N, MAX(P) P FOR D IN (0 A,1 B,2 C,3 D))
  21. ;
  22.  
  23. MERGE INTO COC T USING (
  24. WITH A AS (
  25. SELECT
  26. EMPNO, JOB
  27. , CONNECT_BY_ROOT(SAL) S
  28. , CONNECT_BY_ROOT(EMPNO) N
  29. , CONNECT_BY_ROOT(DEPTNO) P
  30. , LEVEL LVL
  31. FROM (
  32. SELECT TRUNC(EMPNO+DBMS_RANDOM.VALUE*3) EMPNO
  33. , SUBSTR(JOB,1,3) JOB
  34. , SAL+10 SAL
  35. , DEPTNO, MGR
  36. FROM EMP
  37. )
  38. CONNECT BY MGR = PRIOR EMPNO
  39. ), B AS (
  40. SELECT EMPNO, JOB
  41. , S, N, P
  42. , MAX(LVL)OVER(PARTITION BY EMPNO) LVL
  43. , MAX(LVL)OVER(PARTITION BY EMPNO) - LVL D
  44. FROM A
  45. )
  46. SELECT * FROM B
  47. PIVOT(MAX(S) S, MAX(N) N, MAX(P) P FOR D IN (0 A,1 B,2 C,3 D))
  48. ) S
  49. ON (T.EMPNO = S.EMPNO)
  50. WHEN MATCHED THEN UPDATE
  51. SET
  52. T.JOB = S.JOB
  53. , T.LVL = S.LVL
  54. , T.A_S = S.A_S
  55. , T.A_N = S.A_N
  56. , T.A_P = S.A_P
  57. , T.B_S = S.B_S
  58. , T.B_N = S.B_N
  59. , T.B_P = S.B_P
  60. , T.C_S = S.C_S
  61. , T.C_N = S.C_N
  62. , T.C_P = S.C_P
  63. , T.D_S = S.D_S
  64. , T.D_N = S.D_N
  65. , T.D_P = S.D_P
  66. WHEN NOT MATCHED THEN INSERT (
  67. EMPNO, JOB, LVL
  68. , A_S, A_N, A_P
  69. , B_S, B_N, B_P
  70. , C_S, C_N, C_P
  71. , D_S, D_N, D_P
  72. )
  73. VALUES (
  74. S.EMPNO, S.JOB, S.LVL
  75. , S.A_S, S.A_N, S.A_P
  76. , S.B_S, S.B_N, S.B_P
  77. , S.C_S, S.C_N, S.C_P
  78. , S.D_S, S.D_N, S.D_P
  79. )
  80. ;
  81.  
  82. COMMIT;
  83.  
  84. SET NUM 5
  85.  
  86. SELECT * FROM COC;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement