sql不一致的数据类型:期望的数字得到了char

时间:2014-05-15 20:17:27

标签: 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 

1 个答案:

答案 0 :(得分:3)

您无法混合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