我如何加入存储过程?
我有一个不带参数的存储过程,它返回两个字段。 存储过程总结应用于租户的所有交易,并返回租户的余额和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