我有一个名为runTotal的字段名,它是一个整数。
我正在尝试一个CASE语句,将值分配给最高总数:
select (case when isnull(t.runtotal,90) = 0 then 'You have reached max total' else t.runtotal end) runtotal
。
我收到以下错误:
Conversion failed when converting the varchar value 'Class is full' to data type int
如果我删除Else t.runtotal,它可以工作,但我们希望代码中的其他内容,因为默认值应为90.
任何想法如何解决这个问题?
非常感谢提前
答案 0 :(得分:3)
那是因为你要返回不同的数据类型 第一部分是返回varchar,而else部分返回一个数字。
select
-- this condition returns a varchar
(case when isnull(t.runtotal,90) = 0 then 'You have reached max total'
-- else condition is returning a number
else t.runtotal
end) runtotal.
返回值的数据类型应相同 请更正。
答案 1 :(得分:0)
此代码说
select (case when isnull(t.runtotal,90) = 0
then 'You have reached max total'
else t.runtotal end) runtotal
如果runTotal = 0,请返回一个字符串,其中包含消息文本“您已达到最大总数”。 否则,给我一个整数,告诉我总计
这就是说,给我一个错误消息字符串,或者运行总计转换为字符串的内容
select (case when isnull(t.runtotal,90) = 0
then 'You have reached max total'
else Str(t.runtotal) end) runtotal
答案 2 :(得分:0)
我终于解决了这个问题。以下是最终解决方案:
(case when isnull(t.runtotal,9) = 0 then 'You have reached max total'
else str(isnull(t.runtotal,9)) end) runtotal