私は常に2行にエラーを与えることによってテストされています。このコードがあります。ON句とグループでエラーが発生するのはなぜですか?
メッセージ156、レベル15、状態1、プロシージャ GetUserPaymentsPartialRecordByClass、「オン」 キーワードの近くに25行目に正しくない構文を。メッセージ156、レベル15、状態1、手順 GetUserPaymentsPartialRecordByClass、行50 キーワード 'group'の近くの構文が正しくありません。
CREATE PROCEDURE [Accounts].[GetUserPaymentsPartialRecordByClass]
@classID int=1
AS
BEGIN
create table #temp (sID int,cID int, accID int, className varchar(50),transactions varchar(max),PayableAmount money,TotalAmountPaid money,PendingAmount money)
INSERT into #temp
(sID,cID,accID,className)
select
distinct st.StudentID as sID,
st.ClassToWhichAdmitted_ID as cID ,
st.Account_ID as accID,
c.ClassName as className
from School.StudentInformation st
left join School.Classes c
on st.ClassToWhichAdmitted_ID= c.ClassID
where st.ClassToWhichAdmitted_ID= @classID
update temp
set temp.transactions=transactions
from #temp temp outer apply(
select convert(varchar,Convert(decimal(10,0),t.Credit))+', ' AS 'data()'
from Accounts.Transactions T
on T.Account_ID=temp.accID
and T.Credit>0 and T.IsReversed=0
and Particulars Like '%Received%'
inner join Accounts.Invoices inv
on inv.Student_ID=temp.sID and inv.InvoiceNumber=T.InvoiceNumber
FOR XML PATH('')
) s(transactions)
update T
set PayableAmount = sum(i.Amount+ i.Fine)
from #temp T
INNER JOIN Accounts.Invoices I ON I.Student_ID= T.sId and i.Class_ID = T.cID
update temp
set TotalAmountPaid =sum(t.Credit) from
#temp temp Inner join
Accounts.Transactions T
on t.Account_ID = temp.accID
and t.Credit>0 AND t.IsReversed=0 and
t.Particulars Like '%Received%'
inner join Accounts.Invoices inv
on inv.Student_ID=temp.sID and inv.InvoiceNumber=T.InvoiceNumber
group by T.Account_ID
update temp
sett PendingAmount= (PayableAmount - TotalAmountPaid)
SELECT st.StudentName, st.StudentRegisterationNo,ClassName,
transactions as Paid, Convert(decimal(10,0),TotalAmountPaid) as TotalPaid,
PayableAmount, PendingAmount as 'PendingAmount' FROM #temp T inner join School.StudentInformation ST
On st.StudentID= T.sId
END
私は – Jens
を知っているのでupdateステートメントはgroup by節を持つことができません。setではなく 'set'です。そして、SQL Serverはステートメントの間にセパレータを必要としませんか? – jarlh
@jarlh SQL Server *ではセパレータを使用することを推奨していますが、特定の場合を除いて、*セパレータは必要ありません。 – RBarryYoung