我如何加入存储过程?

我有一个不带参数的存储过程,它返回两个字段。 存储过程总结应用于租户的所有交易,并返回租户的余额和ID。

我想使用它返回的记录集和一个查询,并且我需要将它的结果加入到租户的id中。

这是我目前的查询:

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

ORDER BY p.PropertyName, t.CarPlateNumber

存储过程是这样的:

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

我想从存储过程中添加余额。

我怎样才能做到这一点?


我真的很喜欢上一个答案(不要使用SP),但是如果你由于某种原因被绑定到SP本身,你可以用它来填充临时表,然后加入临时表。 请注意,你将花费自己一些额外的开销,但这是我能想到使用实际存储过程的唯一方法。

同样,您可能会更好地将来自SP的查询插入原始查询中。


将SP的结果插入临时表中,然后加入:

CREATE TABLE #Temp (
    TenantID int, 
    TenantBalance int
)

INSERT INTO #Temp
EXEC TheStoredProc

SELECT t.TenantName, t.CarPlateNumber, t.CarColor, t.Sex, t.SSNO, t.Phone, t.Memo,
    u.UnitNumber, p.PropertyName
FROM tblTenant t
INNER JOIN #Temp ON t.TenantID = #Temp.TenantID
...

简短的答案是“你不能”。 你需要做的是使用子查询,或者你可以将现有的存储过程转换为表函数。 将它作为函数来创建将取决于您需要它的“可重用”方式。

链接地址: http://www.djcxy.com/p/86209.html

上一篇: How can I join on a stored procedure?

下一篇: Real life example, when to use OUTER / CROSS APPLY in SQL