使用表alias.column名称作为参数调用Inline UDF

Jdu*_*nn5 1 sql sql-server sql-server-2005 user-defined-functions

我有一个内联表值函数,我想从select传递一个列,但将使用表别名.

例如:

select top 1000 a.*, b.* from item a
LEFT JOIN itemList b on a.item_id = b.item_id
where a.item_id in (SELECT * FROM dbo.fn_GIVFUC('1234567', a.item_id))
Run Code Online (Sandbox Code Playgroud)

结果:'a'附近的语法不正确.

谢谢

gbn*_*gbn 5

你必须像这样使用CROSS APPLY

select top 1000  
   a.*, b.* 
from 
  item a
  CROSS APPLY
  dbo.fn_GIVFUC('1234567', a.item_id) c ON a.item_id = c.item_id
  LEFT JOIN 
  itemList b on a.item_id = b.item_id
Run Code Online (Sandbox Code Playgroud)

这意味着你可能会得到重复,所以这可能会有效.我无法测试

select top 1000  
   a.*, b.* 
from 
  item a
  LEFT JOIN 
  itemList b on a.item_id = b.item_id
WHERE
  EXISTS (
       SELECT *
       FROM dbo.fn_GIVFUC('1234567', a.item_id)
       -- may need this WHERE a.item_id = c.item_id
      )
Run Code Online (Sandbox Code Playgroud)