sql 数据类型不一致:预期数字得到字符

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)

T M*_*own 5

你不能混合一个CASE语句的结果,这意味着你不能INT在一个条件下返回一个而VARCHAR在另一个条件下返回一个。如果你想返回,Returned那么你需要CONVERTCAST你的数值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)