Использование запроса выбора в качестве параметра в табличной функции

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

ID  NAME    RELATED_ID
1   a       null
2   b       null
3   c       1
4   d       1

Итак, выберите * из fn_getrelatedids(1) возвращает

ID
1
3
4

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

select * from fn_getrelatedids (select e.id from entity e where e.name='a')

Очевидно, это не работает.

Я попытался применить кросс:

select e.id from entity e 
cross apply 
(select f.id from fn_getrelatedids (e.id) AS fg
WHERE fg.id = e.id) AS R
WHERE e.name = 'a'

Это не возвращает правильное значение. Функция возвращает только

ID
1

Я что-то упускаю здесь очевидное?

1 ответ

Решение

Посмотрите, не это ли вы пытаетесь сделать.

select fg.id 
from entity e 
cross apply dbo.fn_getrelatedids(e.id) AS fg
WHERE e.name = 'a'

Редактировать: добавить право выбора

Пример:

SELECT      table1.f_code, 
            table1.subsidiaryledger AS ledgerid, 
            table1.subgroupid , 
            table1.openingamt, 
            table1.ac_type, 
            0 AS debitamount, 
            0 AS creditamount, 
            closing , 
            closing_type 
FROM        ledgersubsidiaryopeningbalanace   AS table1 
** cross apply 
dbo.getsubsidaryclosingnew (table1.subsidiaryledger,table1.subgroupid,table1.openingamt,table1.ac_type,0,0) AS tv
WHERE       table1.subsidiaryledger = tv.ledgerid 
AND         table1.subgroupid = tv.subgroupid** 
AND         subsidiaryledger = 15105 
AND         f_code = 1
Другие вопросы по тегам