在SUM和案例中进行CAST或转换

时间:2016-03-04 20:12:47

标签: sql sql-server

在使用Case的聚合SUM中实现强制转换或转换是否正确?如果是,那么实现它们的正确方法是什么?例如

    SUM(CASE WHEN X = 'Y' THEN Z ELSE 0.00 END)

在这种情况下,Z将是Cast或Converted,它是数据类型数字,我想将其转换为varchar

1 个答案:

答案 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运算符无效。