仅当货币不是 0.0000 时才投射 2 个小数值

Cast 2 decimal values only if currency is not 0.0000

我正在尝试打印

条件1:如果货币显示为0.00,则去掉小数点(.00)

Ex: 0.00 -> 0

条件2:如果货币出现大于0.00,则保留小数点后2位(所以,######.00)

12.46 -> 12.46 
0.00 -> 0
13.96 -> 13.96

我尝试了以下方法,但 CAST 不起作用:

CASE 
WHEN CAST([Money] AS NUMERIC(10,2)) = 0.00 THEN CAST([Money] AS INT)
ELSE CAST([Money] AS NUMERIC(10,2)) END BankPile, 

如果你关心这些细节,那么你需要将结果转换为一个stirng:

(case when CAST([Money] AS NUMERIC(10,2)) = 0.00 then '0'
      else cast(cast([Money] as numeric(10, 2)) as varchar(255))
 end)

您不能拥有同时包含小数和整数类型的列。我建议只返回十进制值并在显示层(表单、报表、网页等)中设置格式