• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

max(lpad(....)) 사용시의 오류 가능성

23.04.14 00:03 작성 23.04.14 00:51 수정 조회수 201

0

 

실습코드 'first_value_last_value_Analytic_실습'의 마지막

"-- 연속된 데이터 흐름에서 값이 Null일 경우 바로 값이 있는 바로 위의 데이터를 가져 오기." 와 관련된 질문입니다(아마도 실습코드는 있는데 본 강의에서는 다루지 않으신 듯합니다).

 

(예제코드)

temp_04 as (

select *

, max(lpad(rnum::text, 6, '0')||daily_sum) over (order by ord_date rows between unbounded preceding and current row) as temp_str

from temp_03 order by ord_date

)

dayily_sum자체를 일정한 자리수로 padding을 해주고 난 뒤 처리해도 되지 않을까 생각해봤습니다.

temp_04 as (

select *

, max(lpad(rnum::text, 6, '0')||lpad((daily_sum)::text,6, '0' )) over (order by ord_date rows between unbounded preceding and current row) as temp_str

from temp_03 order by ord_date

)

 이렇게 해서 처리해도 될까요?

 

 

답변 1

답변을 작성해보세요.

1

안녕하십니까,

앗, 이 SQL이 실습코드에는 들어가 있군요. 난이도가 있어서 강의에서 빼버렸는데, 실습코드에서 지우질 못했군요.

말씀하신대로 max(lpad(rnum::text, 6, '0')||lpad((daily_sum)::text,6, '0' )) 로 하셔도 되는데, max(lpad(rnum::text, 6, '0')||daily_sum)면 충분할 것 같은데, 이걸 굳이 위와 같이 바꾸실 필요가 있을까 생각도 듭니다.

둘 다 같은 결과가 나오니, 편하신 것 선택하시면 될 것 같습니다.

감사합니다.