Q&A

  • SQL 해석좀 해주세요..
DB 를 오라클 사용하는데 아래문장이 넘 해까려요... 좀 알려주세요.

SUM(DECODE(SIGN(a.sys_date - b.sys_date), 1, c_tot,0))

------------------------

AA



SIGN 은 AA 가 음수이면 -1, 0이면 0 양수이면 1을 리턴해주잖아요..

근데.. 그다음의,1 부터 잘 해석이 안되네요..



1  COMMENTS
  • Profile
    하얀까마귀 2000.05.01 20:50
    안녕하세요 하얀까마귀 입니다..



    오라클의 DECODE문은 아주 많이 사용되는 함수중에 하나이고 그리고 그 효과 또한 상당



    해서 많은사람이 애용하는 함수입니다...



    이건 if .. then .. else 와 같은 기능을 합니다..



    다시 말해서



    DECODE(a,b,c,d ) 라고 했을때



    이걸 풀어쓰면



    if a = b then

    Result := c

    else Result := d;

    입니다...



    아시겠죠....



    > SUM(DECODE(SIGN(a.sys_date - b.sys_date), 1, c_tot,0))

    따라서 이문장을 해석하면



    a.sys_Date > b.sys_Date 때에 c_tot의 값을 넘기고 그렇제 않으면 0을 리턴합니다..



    그래서 합을 구하는 거죠...



    a.sys_Date > b.sys_Date 인 레코드의 c_Tot총합을 구하는 거내요...



    다르게 구현하는것 보다 decode로 구현하는게 빠르지만 이놈도 내부적으로 약간의



    프로세스가 걸리기 때문에 남용하는건 않좋습니다..



    그럼.. 즐거운시간 되세요



    - 하얀까마귀 -



    최은정 wrote:

    > DB 를 오라클 사용하는데 아래문장이 넘 해까려요... 좀 알려주세요.

    > SUM(DECODE(SIGN(a.sys_date - b.sys_date), 1, c_tot,0))

    > ------------------------

    > AA

    >

    > SIGN 은 AA 가 음수이면 -1, 0이면 0 양수이면 1을 리턴해주잖아요..

    > 근데.. 그다음의,1 부

    터 잘 해석이 안되네요..

    >