오라클 plsql window함수(lead/lag) 조건절 사용에 대해서 0 1 1,373

by 두발타 [PL/SQL] plsql 오라클 도와주세요 궁금 [2019.09.19 17:47:07]


SELECT COUNT(*) FROM
(
      SELECT * FROM
     (
             SELECT
                         AM.NAME, AM.STARTTIME,
                         LAG(AM.STARTTIME) over (order by AM.STARTDATE, AM.ENDDATE) LAGSTARTTIME,
                         LEAD(AM.STARTTIME) over (order by AM.STARTDATE, AM.ENDDATE) LEADSTARTTIME,
                          AM.ENDTTIME,
                         LAG(AM.ENDTTIME, ) over (order by AM.STARTDATE, AM.ENDDATE) LAGENDTTIME, ,
                         LEAD(AM.ENDTTIME, ) over (order by AM.STARTDATE, AM.ENDDATE) LEADENDTTIME, ,
             FROM TIMETEMP AM
             WHERE AM.NAME = A기준인<변수>
             order by AM.STARTDATE, AM.ENDDATE
 )BM
 WHERE (BM.LEADSTARTTIME = BM.ENDTIME OR (BM.LEADSTARTTIME is null and BM.STARTTIME=BM.LAGENDTIME))
 group by BM.NAME
)
WHERE ....

 

대략적으로 이런 쿼리를 plsql function을 만들어서 그안에서 돌릴려고 합니다.

쿼리만 돌렸을는 잘 실행되나 function 안에선  실행이 안되어

안에서 부터 확인해본 결과

 WHERE (BM.LEADSTARTTIME = BM.ENDTIME OR (BM.LEADSTARTTIME is null and BM.STARTTIME=BM.LAGENDTIME))

윈도우 함수를 네이밍하여 사용하는곳에서 제대로 실행이 안됩니다.

조건절에 네이밍하여서도 못쓰는게 맞는지 아니면 제가 멀 잘못하고 있는지 궁금합니다.

by 마농 [2019.09.19 17:55:43]

쿼리로는 잘되는데? PL/SQL 은 안된다?
 - 그런데 왜 질문에 잘 되는 쿼리를 올리시나요?
 - 잘 안되는 PL/SQL 코드를 올려주셔야죠?

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