작성
·
381
0
with temp_01 as(
select date_trunc('day',b.order_date)::Date as ord_date, sum(a.amount) as daily_sum
답변 1
1
안녕하십니까,
coalesce()나 lag(daily_sum, 1, 'No previous')와 같이 Null값인 경우 이를 대체하는 값을 출력할 때 주의해야 할 사항이 있습니다. 바로 기반 출력값과 데이터 타입이 동일해야 한다는 것입니다.
그러니까 daily_sum이 숫자값이 므로 lag(daily_sum, 1, 'No previous')와 같이 Null일 경우 'No previous' 같은 문자열 값을 할당해서는 안됩니다. 이는 coalesce() 도 마찬가지 입니다.
coalesce(lag(daily_sum, 1) over(order by ord_date), 'No previous') 같이 처리해도 오류를 출력합니다.
Null인 경우에 아래와 같이 적당한 숫자값을 대체해 줘야 합니다.
lag(daily_sum, 1, 0) over(order by ord_date) as prev_daily_sum
감사합니다.