Return 数据来自 Table 带连接的值函数
Return Data from Table Valued Function with Joins
我有一个包含 table 值函数的查询。但是当执行这个附加的错误时。我该如何解决?
SELECT bg.Description, im.ERPItemCode,
(select Opening,Topup1,Topup2,Topup3,
Returnsv,SaleQty,SaleVal from dbo.GetOpeningByRepAcc(@Date,@RepAccId,@Cente![enter image description here][2]rId,im.Id)),
(select Name from dbo.DistributionCenter where Id = @CenterId) as center,
(select Name from dbo.SalesRepAcc where Id = @RepAccId)as repacc
FROM BudgetGroup AS bg
INNER JOIN ItemMaster AS im ON bg.Id = im.BudgetGroupId
WHERE (bg.Active = 1)
这是因为在将 TVF 用作子查询时需要 return 单个列
在您的代码中,您 return Opening,Topup1,Topup2,Topup3,Returnsv,SaleQty,SaleVal
来自您的 TVF
((select Opening,Topup1,Topup2,Topup3,
Returnsv,SaleQty,SaleVal from dbo.GetOpeningByRepAcc(@Date,@RepAccId,@CenterId,im.Id))
您还需要确保从子查询中只得到一行。您可以将 TOP 1
与 ORDER BY
一起使用以仅获得一行
当您需要 return 来自函数的多个值时,您可以使用 outer apply
而不是子选择:
select
bg.Description,
im.ERPItemCode,
T1.Opening,
T1.Topup1,
T1.Topup2,
T1.Topup3,
T1.Returnsv,
T1.SaleQty,
T1.SaleVal,
(select Name from dbo.DistributionCenter where Id = @CenterId) as center,
(select Name from dbo.SalesRepAcc where Id = @RepAccId)as repacc
from BudgetGroup AS bg
inner join ItemMaster AS im ON bg.Id = im.BudgetGroupId
outer apply dbo.GetOpeningByRepAcc(@Date,@RepAccId,@CenterId,im.Id) as T1
where (bg.Active = 1)
我有一个包含 table 值函数的查询。但是当执行这个附加的错误时。我该如何解决?
SELECT bg.Description, im.ERPItemCode,
(select Opening,Topup1,Topup2,Topup3,
Returnsv,SaleQty,SaleVal from dbo.GetOpeningByRepAcc(@Date,@RepAccId,@Cente![enter image description here][2]rId,im.Id)),
(select Name from dbo.DistributionCenter where Id = @CenterId) as center,
(select Name from dbo.SalesRepAcc where Id = @RepAccId)as repacc
FROM BudgetGroup AS bg
INNER JOIN ItemMaster AS im ON bg.Id = im.BudgetGroupId
WHERE (bg.Active = 1)
这是因为在将 TVF 用作子查询时需要 return 单个列
在您的代码中,您 return Opening,Topup1,Topup2,Topup3,Returnsv,SaleQty,SaleVal
来自您的 TVF
((select Opening,Topup1,Topup2,Topup3,
Returnsv,SaleQty,SaleVal from dbo.GetOpeningByRepAcc(@Date,@RepAccId,@CenterId,im.Id))
您还需要确保从子查询中只得到一行。您可以将 TOP 1
与 ORDER BY
一起使用以仅获得一行
当您需要 return 来自函数的多个值时,您可以使用 outer apply
而不是子选择:
select
bg.Description,
im.ERPItemCode,
T1.Opening,
T1.Topup1,
T1.Topup2,
T1.Topup3,
T1.Returnsv,
T1.SaleQty,
T1.SaleVal,
(select Name from dbo.DistributionCenter where Id = @CenterId) as center,
(select Name from dbo.SalesRepAcc where Id = @RepAccId)as repacc
from BudgetGroup AS bg
inner join ItemMaster AS im ON bg.Id = im.BudgetGroupId
outer apply dbo.GetOpeningByRepAcc(@Date,@RepAccId,@CenterId,im.Id) as T1
where (bg.Active = 1)