sql不一致的数据类型:预期数量为个字符

sql不一致的数据类型:预期数量为个字符,sql,varchar,case-when,Sql,Varchar,Case When,我试图在语句时编写一个Case,但我得到了一个不一致的数据类型错误。如果不满足第一个when语句,我需要显示“Returned” CASE WHEN (X.RECEIVED_QTY = 0) THEN FLOOR(SYSDATE-INVENTORY_TRANS.TRANSACTION_DATE) WHEN (X.RECEIVED_QTY = 0) THEN 'RETURNED' END AS DAYS_OUT 不能混合使用CASE语句的结果,这意味着不能在一个条件下返回INT,在另一个条件

我试图在语句时编写一个
Case,但我得到了一个不一致的数据类型错误。如果不满足第一个when语句,我需要显示“Returned”

CASE
WHEN (X.RECEIVED_QTY = 0) THEN FLOOR(SYSDATE-INVENTORY_TRANS.TRANSACTION_DATE) 
WHEN (X.RECEIVED_QTY = 0) THEN 'RETURNED'
END AS DAYS_OUT 

不能混合使用
CASE
语句的结果,这意味着不能在一个条件下返回
INT
,在另一个条件下返回
VARCHAR
。如果要返回
返回的
,则需要将数值转换为
VARCHAR

你的案例也有语法问题

您必须将其更改为以下内容:

CASE X.RECEIVED_QTY 
  WHEN 0 THEN CAST( FLOOR(SYSDATE-INVENTORY_TRANS.TRANSACTION_DATE) AS VARCHAR(20))
  ELSE 'RETURNED'
END AS DAYS_OUT

不能混合使用
CASE
语句的结果,这意味着不能在一个条件下返回
INT
,在另一个条件下返回
VARCHAR
。如果要返回
返回的
,则需要将数值转换为
VARCHAR

你的案例也有语法问题

您必须将其更改为以下内容:

CASE X.RECEIVED_QTY 
  WHEN 0 THEN CAST( FLOOR(SYSDATE-INVENTORY_TRANS.TRANSACTION_DATE) AS VARCHAR(20))
  ELSE 'RETURNED'
END AS DAYS_OUT