这就是我所做的
Declare @PreviousAmount money
set @PreviousAmount = 0
select @PreviousAmount = @PreviousAmount + Inp.AmountPaid
From Invoice as Inv , InvoicePayment as Inp
where Inv.InvoiceId = Inp.InvoiceId
我说错了
“必须声明标量变量”@PreviousAmount“.”
更新 – 这是给出错误的实际代码
CREATE PROCEDURE [dbo].[spInvoiceTsk]
@AmountPaid money
AS
BEGIN
SET NOCOUNT ON;
Declare @PreviousAmount money
set @PreviousAmount = 0
select case
when (@AmountPaid = Inv.InvoiceAmount )
Then @AmountPaid
else (
select @PreviousAmount = @PreviousAmount + Inp.AmountPaid
From dbo.Invoice as Inv , dbo.InvoicePayment as Inp
where Inv.InvoiceId = Inp.InvoiceId
)
from dbo.Invoice as Inv
--select *
--from Invoice as a
--Inner Join InvoicePayment as IP ON a.InvoiceId = IP.InvoiceId
update I
set I.AmountPaid = @PreviousAmount
from Invoice as I , InvoicePayment as IP
where I.AmountPaid = IP.AmountPaid
END
GO
最佳答案 您的查询中没有任何问题,我的猜测是您在执行查询时要离开声明部分,所以请尝试一次运行所有.请以下面的格式更改JOIN:
DECLARE @PreviousAmount MONEY
SET @PreviousAmount = 0
SELECT @PreviousAmount = @PreviousAmount + Inp.AmountPaid
FROM Invoice AS Inv
INNER JOIN InvoicePayment AS Inp ON Inv.InvoiceId = Inp.InvoiceId