Использование запроса выбора в качестве параметра в табличной функции
У меня есть функция, которая принимает целочисленный ввод и возвращает таблицу с соответствующими идентификаторами из таблицы ниже.
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