这是我的 SQL 及其来自 Select 语句的片段......它运行良好,但现在我必须从 CAST 中删除硬编码值......我输入十进制(38,2) 我希望它是从BaseCurrencyDP.NumberOfDecimalPlaces替换
但它说 Integer 预期,并且此列NumberofDecimalPlaces
在tinyint
.
请指导
select distinct
a,
b,
c,
CASE
When @userOriginalCurrencyCode IS NOT NULL -- Case For Original Currency Filled in Criteria .
Then SUM(CASE WHEN EmployeeHeader.EmployeePremiumType = 2 THEN EmployeeAmount.TransactionClosedAmountOriginal ELSE 0 END)
When @userAccountingCurrencyCode IS NOT NULL
THEN SUM(CASE WHEN EmployeeHeader.EmployeePremiumType = 2 THEN EmployeeAmount.TransactionClosedAmountAccounting ELSE 0 END )
ELSE CASE
WHEN (select COUNT( DISTINCT( EmployeeAmountGroup.OriginalCurrencyCode )) from user.EmployeeAmountGroup Where EmployeeAmountGroup.EmployeeHeaderID = EmployeeHeader.EmployeeHeaderID )<>1
THEN
CASE WHEN(select COUNT( DISTINCT( EmployeeAmountGroup.AccountingCurrencyCode )) from user.EmployeeAmountGroup Where EmployeeAmountGroup.EmployeeHeaderID = EmployeeHeader.EmployeeHeaderID)<>1
THEN
CAST(ROUND(SUM(CASE WHEN EmployeeHeader.EmployeePremiumType = 2 THEN EmployeeAmount.TransactionClosedAmountBase ELSE 0 END ),BaseCurrencyDP.NumberOfDecimalPlaces) AS Decimal(38,2))
ELSE CAST(ROUND(SUM(CASE WHEN EmployeeHeader.EmployeePremiumType = 2 THEN EmployeeAmount.TransactionClosedAmountAccounting ELSE 0 END ),BaseCurrencyDP.NumberOfDecimalPlaces) AS Decimal(38,2))
END
ELSE CAST(ROUND(SUM(CASE WHEN EmployeeHeader.EmployeePremiumType = 2 THEN EmployeeAmount.TransactionClosedAmountOriginal ELSE 0 END ),BaseCurrencyDP.NumberOfDecimalPlaces) AS Decimal(38,2))
END
End as TotalClosedAmount,
请指导