Цикл табличной функции sql - PullRequest
2 голосов
/ 20 июня 2011

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

dbo.Bosses (@empId, @date)

Как мне пройти через эту функцию с информацией из другой?

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

Table B
EmpId     int
hours     float
day       datetime
creator   int

Ответы [ 2 ]

4 голосов
/ 20 июня 2011

Если у вас есть SQL Server 2005 +

SELECT
  *
FROM
  TableB
CROSS APPLY
  dbo.Bosses(TableB.EmpID, TableB.day) AS bosses

CROSS APPLY будет возвращать результаты только в том случае, если функция Bosses возвращает результаты. Аналогично ВНУТРЕННЕМУ СОЕДИНЕНИЮ.

OUTER APPLY будет возвращать результаты для каждой записи в TableB, аналогично LEFT JOIN.

3 голосов
/ 20 июня 2011

Вам необходимо использовать оператор APPLY (CROSS или OUTER, первый аналогичен INNER JOIN, последний - LEFT JOIN):

SELECT b.*, a.*
FROM table_b b
CROSS APPLY dbo.Bosses(b.emp_id, b.emp_date)a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...