如何在存储过程中的CTE中的标量函数中使用计算列。

时间:2011-12-21 08:45:22

标签: sql sql-server tsql

好的,标题可能令人困惑。

我需要使用案例陈述来计算扣除价值的税额。

此减少的值将在标量函数中用于计算存储过程中CTE中的另一个值。

如何在标量函数中重用这个计算列?我尝试了以下内容。

paidminusIPT = case when country = "ireland" then (paid - 1) else paid end,
dbo.fnEarnedPrem(a,b,c,d,paidminusipt,e,f)

请注意,这不是确切的代码,只是一个快速参考..

这可能吗?

问候。

1 个答案:

答案 0 :(得分:1)

您应该使用完整表达式而不仅仅是列名:

paidminusIPT = case when country = "ireland" then (paid - 1) else paid end,
dbo.fnEarnedPrem(a,b,c,d,case when country = "ireland" then (paid - 1) else paid end,e,f)

或使用CTE

;WITH C as(
SELECT a,b,c,d,e,f,paidminusIPT = case when country = "ireland" then (paid - 1) else paid end FROM SomeTable)
Select *,dbo.fnEarnedPrem(a,b,c,d,paidminusipt,e,f) FROM C