본문 바로가기

[오라클 레퍼런스 함수] PRESENTNNV - model_clause 실행 전 NULL 여부에 따라 값 할당

by ㅇㅍㅍ 2023. 8. 14.
[오라클 레퍼런스 함수] PRESENTNNV - model_clause 실행 전 NULL 여부에 따라 값 할당
728x90

 

PRESENTNNV

 

구문

PRESENTNNV(cell_reference, expr1, expr2)

 

목적

PRESENTNNV 함수는 SELECT 문의 model_clause 내에서만 사용할 수 있으며, 오직 모델 규칙의 오른쪽에 있는 경우에만 사용할 수 있습니다. 이 함수는 cell_referencemodel_clause 실행 전에 존재하고 PRESENTNNV가 평가될 때 null이 아닌 경우에는 expr1을 반환합니다. 그렇지 않으면 expr2를 반환합니다. 이 함수는 NVL2와 다릅니다. NVL2는 실행 시간에 데이터를 평가하는 반면에, PRESENTNNVmodel_clause 실행 전 데이터를 평가합니다.

 

참고:

 

예제

다음 예에서 만약 2002년도의 Mouse Pad에 대한 판매 내역 행이 존재하며 판매 값이 null이 아니면, 판매 값은 변경되지 않습니다. 행이 존재하고 판매 값이 null이라면 판매 값은 10으로 설정됩니다. 행이 존재하지 않으면 판매 값이 10으로 설정된 행이 생성됩니다.

SELECT country, prod, year, s
  FROM sales_view_ref
  MODEL
    PARTITION BY (country)
    DIMENSION BY (prod, year)
    MEASURES (sale s)
    IGNORE NAV
    UNIQUE DIMENSION
    RULES UPSERT SEQUENTIAL ORDER
    ( s['Mouse Pad', 2002] = 
        PRESENTNNV(s['Mouse Pad', 2002], s['Mouse Pad', 2002], 10)
    )
  ORDER BY country, prod, year;

COUNTRY       PROD                                         YEAR           S
----------    -----------------------------------      --------   ---------
France        Mouse Pad                                    1998     2509.42
France        Mouse Pad                                    1999     3678.69
France        Mouse Pad                                    2000     3000.72
France        Mouse Pad                                    2001     3269.09
France        Mouse Pad                                    2002          10
France        Standard Mouse                               1998     2390.83
France        Standard Mouse                               1999     2280.45
France        Standard Mouse                               2000     1274.31
France        Standard Mouse                               2001     2164.54
Germany       Mouse Pad                                    1998     5827.87
Germany       Mouse Pad                                    1999     8346.44
Germany       Mouse Pad                                    2000     7375.46
Germany       Mouse Pad                                    2001     9535.08
Germany       Mouse Pad                                    2002          10
Germany       Standard Mouse                               1998     7116.11
Germany       Standard Mouse                               1999     6263.14
Germany       Standard Mouse                               2000     2637.31
Germany       Standard Mouse                               2001     6456.13

18 rows selected.

 

앞의 예제는 sales_view_ref 뷰가 필요합니다. 이 뷰를 생성하려면 "예제"를 참조하세요.

 


출처: 오라클 레퍼런스

원문 링크: Oracle PRESENTNNV 함수 문서

 

반응형

댓글