是否可以使用先前加入的参数?

时间:2017-09-21 12:28:10

标签: sql sql-server tsql

  

SQL错误:多部分标识符“s.OrderType”不可能   界。

from Table1 as c
inner join Table2 as s on c.RequestID = s.ReqID
inner join dbo.fn_getValues(s.OrderType) as gcd on c.ReqID = gcd.ReqID

1 个答案:

答案 0 :(得分:2)

您需要使用cross apply代替inner join,并将on子句移至where

from        Table1 as c
inner join  Table2 as s 
         on c.RequestID = s.ReqID
cross apply dbo.fn_getValues(s.OrderType) as gcd 
where       c.ReqID = gcd.ReqID

问题是对于连接,表表达式(join后面的位)必须是不可更改的。如果加入表值函数,则不是这样:表表达式取决于另一个表中的值。这就是为什么我们有cross apply