在使用Case的聚合SUM中实现强制转换或转换是否正确?如果是,那么实现它们的正确方法是什么?例如
SUM(CASE WHEN X = 'Y' THEN Z ELSE 0.00 END)
在这种情况下,Z将是Cast或Converted,它是数据类型数字,我想将其转换为varchar
答案 0 :(得分:3)
如果你想要的是首先sum
你的价值,然后将结果显示为varchar
,你会想要这样做:
Cast(Sum(case when x = y then z else 0 end) as varchar(10))
如果您先cast
,您的sum
可能会收到意外结果,或者收到错误消息。例如,尝试执行sum(cast([IntegerColumn] as varchar))
会返回:
Msg 8117,Level 16,State 1,Line 6 操作数数据类型varchar对sum运算符无效。