如何在SUM语句中使用FORMAT(Employee.Salary,'C',EN-US)?获取错误'转换失败

问题描述 投票:0回答:1

我需要使用FORMAT函数以美元格式IN SQL显示“税收工资”列。我正在使用Microsoft SQL服务器。有人可以帮忙吗?得到错误:

“将nvarchar值'$ 17,037.72'转换为数据类型int时转换失败。”

以下是我写的查询:

SELECT EMPLOYEE.ID, EMPLOYEE.NAME, P.DEDCODE,
       SUM(CASE WHEN P.DEDCODE ='SS2' THEN FORMAT(P.AMOUNT,'C','EN-US') ELSE 0 END) AS 'TAX WAGE'
FROM EMPLOYEE
JOIN P ON EMPLOYEE.ID = P.ID and EMPLOYEE.COMPANY = P.COMPANY 
WHERE
      P.DEDCODE ='SS2'
      AND P.YEAR ='2018'
GROUP BY 
      EMPLOYEE.ID,
      EMPLOYEE.NAME,
      P.DEDCODE

我预计税收工资栏的输出为70.5美元而不是简单的70.5

sql sql-server format
1个回答
2
投票

您的格式函数应该在SUM()上:

FORMAT(SUM(CASE WHEN P.DEDCODE = 'SS2' THEN P.AMOUNT ELSE 0 END),'C','EN-US') AS [TAX WAGE]

您已经将WHERE子句与P.DEDCODE ='SS2'包含在内,然后为什么需要条件聚合,它应该只是

SELECT . . . , 
       FORMAT(SUM(P.DEDCODE),'C','EN-US') AS [TAX WAGE]
. . . 
© www.soinside.com 2019 - 2024. All rights reserved.