На него уже ответили, лучший способ обойти это - преобразовать хранимую процедуру в функцию SQL или представление.
Короткий ответ, как уже упоминалось выше, заключается в том, что вы не можете напрямую присоединиться к хранимой процедуре в SQL, если только вы не создадите другую хранимую процедуру или функцию, используя вывод хранимой процедуры во временную таблицу и присоединение к временной таблице, как объяснено выше.
Я отвечу на это, преобразовав вашу хранимую процедуру в функцию SQL, и покажу, как ее использовать в запросе по вашему выбору.
CREATE FUNCTION fnMyFunc()
RETURNS TABLE AS
RETURN
(
SELECT tenant.ID AS TenantID,
SUM(ISNULL(trans.Amount,0)) AS TenantBalance
FROM tblTenant tenant
LEFT JOIN tblTransaction trans ON tenant.ID = trans.TenantID
GROUP BY tenant.ID
)
Теперь, чтобы использовать эту функцию в вашем SQL ...
SELECT t.TenantName,
t.CarPlateNumber,
t.CarColor,
t.Sex,
t.SSNO,
t.Phone,
t.Memo,
u.UnitNumber,
p.PropertyName
FROM tblTenant t
LEFT JOIN tblRentalUnit u ON t.UnitID = u.ID
LEFT JOIN tblProperty p ON u.PropertyID = p.ID
LEFT JOIN dbo.fnMyFunc() AS a
ON a.TenantID = t.TenantID
ORDER BY p.PropertyName, t.CarPlateNumber
Если вы хотите передать параметры в вашу функцию из вышеупомянутого SQL, то я рекомендую вам использовать CROSS APPLY
или CROSS OUTER APPLY
.
Читайте об этом здесь .
Приветствия