SQL: 如何在 sql 的 CASE 函数中存储整数值?
SQL: How to Store Integer value in CASE function in sql?
我在 Sybase 中工作 database.I 希望第 3 个 'WHEN' 语句作为 Integer 作为 Original value(Round((sum(value)*100), 1)).我怎样才能做到这一点。提前致谢。
CASE WHEN Round((sum(value)*100),1)<0 THEN 'Neg'
WHEN Round((sum(value)*100),1)=0 THEN 'N/A'
WHEN Round((sum(value)*100),1)>0 THEN Round((sum(value)*100),1)
END AS RCB
注意:这里第 3 行指示错误,因为它是 integer.The 错误,我得到的是:
错误:- Data exception - data type conversion is not possible. In CASE expression, incompatible data type at result expression 3, ROUND(COALESCE ((SUM(MSTR.SUM.value)*100),0),1)
其次,我尝试使用下面的 Else 语句。
CASE WHEN Round((sum(value)*100),1)<0 THEN 'Neg'
WHEN Round((sum(value)*100),1)=0 THEN 'N/A'
--WHEN Round((sum(value)*100),1)>0 THEN Round((sum(value)*100),1)
ELSE Round((sum(value)*100),1)
END AS RoRC,
但仍然出现同样的错误。请帮帮我。谢谢。
您需要 cast 数字作为 varchar
以匹配 CASE 语句的其他可能结果的类型
CASE WHEN Round((sum(value)*100),1)<0 THEN 'Neg'
WHEN Round((sum(value)*100),1)=0 THEN 'N/A'
WHEN Round((sum(value)*100),1)>0 THEN CAST(Round((sum(value)*100),1) as varchar)
我在 Sybase 中工作 database.I 希望第 3 个 'WHEN' 语句作为 Integer 作为 Original value(Round((sum(value)*100), 1)).我怎样才能做到这一点。提前致谢。
CASE WHEN Round((sum(value)*100),1)<0 THEN 'Neg'
WHEN Round((sum(value)*100),1)=0 THEN 'N/A'
WHEN Round((sum(value)*100),1)>0 THEN Round((sum(value)*100),1)
END AS RCB
注意:这里第 3 行指示错误,因为它是 integer.The 错误,我得到的是:
错误:- Data exception - data type conversion is not possible. In CASE expression, incompatible data type at result expression 3, ROUND(COALESCE ((SUM(MSTR.SUM.value)*100),0),1)
其次,我尝试使用下面的 Else 语句。
CASE WHEN Round((sum(value)*100),1)<0 THEN 'Neg'
WHEN Round((sum(value)*100),1)=0 THEN 'N/A'
--WHEN Round((sum(value)*100),1)>0 THEN Round((sum(value)*100),1)
ELSE Round((sum(value)*100),1)
END AS RoRC,
但仍然出现同样的错误。请帮帮我。谢谢。
您需要 cast 数字作为 varchar
以匹配 CASE 语句的其他可能结果的类型
CASE WHEN Round((sum(value)*100),1)<0 THEN 'Neg'
WHEN Round((sum(value)*100),1)=0 THEN 'N/A'
WHEN Round((sum(value)*100),1)>0 THEN CAST(Round((sum(value)*100),1) as varchar)