Вызов встроенного UDF с именем таблицы alias.column в качестве параметра - PullRequest
1 голос
/ 20 февраля 2012

У меня есть встроенная табличная функция, которой я хочу передать столбец из выбора, но я буду использовать псевдоним таблицы.

Например:

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))

Результат: неверный синтаксис рядом с 'a'.

Спасибо

1 Ответ

5 голосов
/ 20 февраля 2012

Вы должны использовать 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

Это означает, что вы можете получить дубликаты, так что это может работать. Я не могу проверить

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
      )
...