select
DISTINCT
YEAR(CAST(MAIN."출고예정일" AS DATE)) AS "년",
MONTH(CAST(MAIN."출고예정일" AS DATE)) AS "월",
WEEK(CAST(MAIN."출고예정일" AS DATE)) AS "주차",
CAST(MAIN."출고예정일" AS DATE) AS "출고예정일",
cast(main."이동지시서_생성일자" as date) as "이동지시서_생성일자",
MAIN."센터명",
MAIN.inventory_transfer_order_id,
MAIN.SKU_CODE,
MAIN.sku_nm,
MAIN.lv3_cate_nm,
MAIN.lv4_cate_nm,
CASE
WHEN MAIN."사유구분" ='폐기' THEN MAIN."상세사유" --- 구분자 변경 전
ELSE MAIN."사유구분" --- 변경 후
END AS "사유구분",
CASE
WHEN MAIN."상세사유" LIKE '%선도저하%' THEN MAIN."비고"
ELSE MAIN."상세사유"
END AS "상세사유",
MAIN."소비기한",
MAIN."제조일자",
cast(R."입고일자" as date) as "입고일자",
CASE
WHEN MAIN."총수량" =0 THEN 0
WHEN ABS(R."입고량") IS NULL THEN MAIN."총수량"
ELSE ABS(R."입고량")
END AS "폐기수량" --- 제조일자가 NULL값인 경우 입고량이 뜨질 않음
from
MAIN
left join RECEVING R ON R.inventory_transfer_order_id = MAIN.inventory_transfer_order_id
AND R.SKU =MAIN.SKU_CODE
AND cast(R."소비기한" as date) = MAIN."소비기한"
AND (
(MAIN."제조일자" IS NULL AND R."제조일자" IS NULL)
OR CAST(R."제조일자" AS DATE) = MAIN."제조일자") ------- ★ 제조일자가 null 인 경우 2가지 조건으로 분기
AND MAIN."총수량" =R."입고량"
ORDER BY
CAST(MAIN."출고예정일" AS DATE)
컬럼 기준으로 조인 할 경우, 해당 컬럼의 모든 값이 다 기재가 안되어 있을 수도 있으므로, NULL값임에도 붙여야 되는 케이스도 존재한다.
전 : 제조일자가 없어서, 입고일자가 NULL 값으로 붙어버림

후: 제조일자가 없더라도, 입고일자가 그 외의 조건값으로 조인 되어 붙게됨
