use*_*416 1 sql varchar case-when
我正在尝试编写一条Case When语句,但出现数据类型不一致的错误。如果不满足第一个 when 语句,我需要显示“已返回”。
CASE
WHEN (X.RECEIVED_QTY = 0) THEN FLOOR(SYSDATE-INVENTORY_TRANS.TRANSACTION_DATE)
WHEN (X.RECEIVED_QTY = 0) THEN 'RETURNED'
END AS DAYS_OUT
Run Code Online (Sandbox Code Playgroud)
你不能混合一个CASE语句的结果,这意味着你不能INT在一个条件下返回一个而VARCHAR在另一个条件下返回一个。如果你想返回,Returned那么你需要CONVERT或CAST你的数值VARCHAR
您的 CASE 也存在语法问题。
你必须把它改成这样:
CASE X.RECEIVED_QTY
WHEN 0 THEN CAST( FLOOR(SYSDATE-INVENTORY_TRANS.TRANSACTION_DATE) AS VARCHAR(20))
ELSE 'RETURNED'
END AS DAYS_OUT
Run Code Online (Sandbox Code Playgroud)