我遇到了以下SQL查询的一些困难:
SELECT
SUM(ArTrnDetail.NetSalesValue) AS [Price],
'ExecuteSubReport(813, 0, Job)' AS [LaborCost],
'ExecuteSubReport(815, 0, Job)' AS [MaterialCost],
'ExecuteSymbolicMath(LaborCost + MaterialCost)' AS [TotalCost],
'ExecuteSymbolicMath(Price - (LaborCost + MaterialCost))' AS [Margin],
CASE
WHEN SUM(ArTrnDetail.NetSalesValue) = 0
THEN 0
ELSE 'ExecuteSymbolicMath(1 - (TotalCost / Price))' <-- Where it's failing
END AS [MarginPct]
ExecuteSubReport
和ExecuteSymbolicMath
是公司的两个函数。 ExecuteSymbolicMath
基本上会去掉不需要的字符,例如$和逗号,进行数学计算,并将结果作为字符串返回。在列的最终结果中,保留2位小数且该值应在0-1之间。 当我尝试运行查询时,出现了一个错误,说无法将varchar转换为numeric。 我已经尽力尝试了一切可以想到的方法,例如replace、convert、cast和str。
非常感谢您的帮助!
CASE
表达式的类型是什么?如果它是数字,那么'ExecuteSymbolicMath(1-(TotalCost/Price))'
会被视为数字值吗? - Panagiotis Kanavos