私はこのコードを書いて、個々の学生の料金支払い、保留などを表示しましたが、実際には学生全体のクラスになるはずでした。私はたくさん試しましたが、クラス全体ではできません。これを行う方法 ? @studentIDを無視して、@ClassIDだけにしたい。1人ではなく、複数人で出力するには?
ALTER PROCEDURE [Accounts].[GetUserPaymentsPartialRecord]
@StudentId INT= 14,
@classID int=1
AS
BEGIN
declare @accID int
set @accID= (select st.Account_ID from School.StudentInformation ST where st.StudentID = @StudentId and st.ClassToWhichAdmitted_ID= @classID)
declare @className varchar(50)
Set @className= (Select c.ClassName from School.Classes c
Inner Join School.StudentInformation si
ON si.ClassToWhichAdmitted_ID= c.ClassID where si.StudentID= @StudentId)
declare @transactions varchar(max)
Set @transactions=(select convert(varchar,Convert(decimal(10,0),t.Credit))+', ' AS 'data()' from Accounts.Transactions T
where t.Account_ID = (@accID)
and
t.Credit>0
AND
t.IsReversed=0
AND
t.InvoiceNumber in(Select inv.InvoiceNumber from Accounts.Invoices inv where inv.Student_ID= @StudentId)
AND
Particulars Like '%Received%'
FOR XML PATH(''))
declare @PayableAmount money
set @PayableAmount = (select sum(i.Amount+ i.Fine) from Accounts.Invoices I where I.Student_ID= @StudentId and i.Class_ID = @classID)
declare @TotalAmountPaid money
Set @TotalAmountPaid= (Select sum(t.Credit) from Accounts.Transactions T
where t.Account_ID = (@accID)
and
t.Credit>0
AND
t.IsReversed=0
AND
t.InvoiceNumber in(Select inv.InvoiceNumber from Accounts.Invoices inv where inv.Student_ID= @StudentId)
AND
t.Particulars Like '%Received%'
group by t.Account_ID)
declare @PendingAmount money
Set @PendingAmount= (@PayableAmount - @TotalAmountPaid)
SELECT st.StudentName, st.StudentRegisterationNo,@className as ClassName,
@transactions as Paid, Convert(decimal(10,0),@TotalAmountPaid) as TotalPaid,
@PayableAmount, @PendingAmount as 'PendingAmount' FROM School.StudentInformation ST
where st.StudentID= @StudentId
END
[Minimal、Complete、Verifiable example](http://stackoverflow.com/help/mcve)も投稿してください。[How to ask](http://stackoverflow.com/help/how-to-ask)もチェックしてください。 – wdosanjos