by 둥그르 [2024.03.27 10:39:24]
select CASE WHEN extract (hour from sh.shippedat) < 7 THEN to_char(sh.shippedat + INTERVAL '-1 day', 'yyyy-mm-dd') ELSE to_char(sh.shippedat, 'yyyy-mm-dd') END workDay
,sku.externalid
,sku.name
,sku.isfragile
,sum(sis.quantity) Total_unit
,B.CATE1
,B.CATE2
,B.CATE3
,B.CATE4
,B.CATE5
from ods.shipments sh
left join ods.shipment_items sis on sh.id = sis.shipmentId
left join ods.skus sku on sis.skuid = sku.id
left join bimart.dwd_sku_x_margin g ON sku.EXTERNALID = g.SKUSEQ
left join bimart.MANAGEMENT_CATEGORY_HIER_CURR B ON g.MNGCATEID = B.MNGCATEID
where sh.centerid in ('숫자')
and sh.shippedat between '2024-03-01 07:00:00' and '2024-3-20 08:00:00'
group by 1,2,3,4,6,7,8,9,10
위와 같은 SQL문을 돌리면 프로그램에서는 돌아가는데, 웹에서는 아래와 같은 메세지가 나오는데 이유가 뭘까요?
Query failed (#20240327_005420_13848_2ndtq): line 14:55: Cannot apply operator: varchar(60) = bigint
자료형이 안 맞는 것끼리 비교해서 발생하는 에러인 듯 합니다.
문자와 숫자 비교시 문자가 숫자로 형변환되어 비교되는데
이 때 숫자로 변형 불가능한 문자가 있으면 에러가 납니다.
예)
'1' -> 1 형변환 가능
'a' -> 형변환 불가