초보자 쿼리문의 0 2 149

by 불멸의용병 [SQL Query] tibero oracle [2022.01.13 13:11:01]


안녕하세요 티베로 쿼리 문의좀 드리려고 합니다.

SELECT CODE
FROM DESIGEN_TABLE
WHERE 1=1
   AND SEQ = (SELECT MAX(SEQ)-1 FROM DESIGEN_TABLE  WHERE PROD_NO = 'C123')
   AND PROD_NO = 'C123'

이와 같이 DESIGN_TABLE에서 PROD_NO가 'C123'인 것의

최대 SEQ 바로 앞 SEQ (MAX(SEQ)-1)에 해당하는 CODE 값을

조회하는 쿼리를 

SELECT CODE
FROM DESIGEN_TABLE 
WHERE 1=1
   AND SEQ = MAX(SEQ)-1
   AND PROD_NO = 'C123'

이처럼 작성했더니 Invalid use of group functions. 라는 에러가 발생하네요

불필요하게 테이블 명과 제품번호를 중복해서 사용하지 않는 방법이 있는지 문의좀 드립니다

(첨언하자면 해당 쿼리는 select 절에서 "CODE" 값을 구해오기 위한 서브쿼리로 사용하려고 합니다)

by 마농 [2022.01.13 14:42:21]

seq 가 순차적으로 빈 값이 없이 들어온다는 확신이 있다면?
seq - 1 을 사용 할 수 있지만. 그게 아닐 수 있다면?
seq - 1 이 이전 값을 의미하지 않을 수 있습니다.
 

SELECT code
  FROM (SELECT code
             , ROW_NUMBER() OVER(ORDER BY seq DESC) rn
          FROM desigen_table
         WHERE 1=1
           AND prod_no = 'C123'
        )
 WHERE rn = 2
;

 


by 불멸의용병 [2022.01.13 14:52:46]

항상 느끼지만 존경스럽습니다.

매번 많은 배움 얻어갑니다.

늦었지만 새해복 많이 받으시길 빕니다

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