Link to home
Start Free TrialLog in
Avatar of Zack
ZackFlag for Australia

asked on

SQL - Syntax Query Damn Bracket :) Take2

Hi EE,

For some reason on the last line of this code, I have syntax issue:

;WITH B1 AS (
SELECT CS.TRANSRECID, CS.TRANSDATE, CS.OFFSETTRANSVOUCHER, CS.ACCOUNTNUM,
                CS.SETTLEAMOUNTCUR, CS.CREATEDDATETIME,
CS.OFFSETRECID, CS.RECID, CS.DATAAREAID, CS.CREATEDBY
FROM dbo.CUSTSETTLEMENT CS
WHERE CS.DATAAREAID IN (N'EF', N'CSG')
AND (CS.OFFSETTRANSVOUCHER LIKE N'R-%'
                      OR CS.OFFSETTRANSVOUCHER LIKE N'P%'
                      OR CS.OFFSETTRANSVOUCHER LIKE N'P%')
AND CS.CREATEDDATETIME BETWEEN '2018-01-01' AND '2020-01-01'
), B2 AS (
SELECT CSO.OFFSETTRANSVOUCHER, CSO.TRANSRECID, CSO.TRANSDATE,
CSO.ACCOUNTNUM, CSO.SETTLEAMOUNTCUR, CSO.CREATEDDATETIME,
CSO.CREATEDBY, CSO.DATAAREAID, CSO.OFFSETRECID
FROM dbo.CUSTSETTLEMENT CSO
INNER JOIN B1 ON CSO.DATAAREAID = B1.DATAAREAID
AND CSO.TRANSRECID = B1.OFFSETRECID
AND CSO.OFFSETRECID = B1.TRANSRECID
WHERE (CSO.OFFSETTRANSVOUCHER LIKE N'R%'
              OR CSO.OFFSETTRANSVOUCHER LIKE N'I%')
)


SELECT B2.OFFSETTRANSVOUCHER AS SettledBy, B1.OFFSETTRANSVOUCHER,
B2.TRANSRECID AS OFFSETRECID,
B1.TRANSRECID, B1.TRANSDATE, B1.ACCOUNTNUM, B1.SETTLEAMOUNTCUR,
B1.CREATEDDATETIME,  B1.DATAAREAID, B1.CREATEDBY
INTO #TEMP_COMM
FROM B1
INNER JOIN B2 ON B1.DATAAREAID = B2.DATAAREAID
AND B1.OFFSETRECID = B2.TRANSRECID
AND B1.TRANSRECID = B2.OFFSETRECID
GROUP BY B2.OFFSETTRANSVOUCHER, B1.OFFSETTRANSVOUCHER, B2.TRANSRECID,
B1.TRANSRECID, B1.TRANSDATE, B1.ACCOUNTNUM, B1.SETTLEAMOUNTCUR,
B1.CREATEDDATETIME, B1.DATAAREAID, B1.CREATEDBY
--select *from #TEMP_COMM


;WITH SMT AS (
SELECT B.TRANSRECID,B.OFFSETTRANSVOUCHER,B.ACCOUNTNUM,B.SETTLEAMOUNTCUR,
        B.DATAAREAID,CT2.INVOICEPROJECT,CT2.INVOICE,B.TRANSDATE,B.CREATEDDATETIME,B.SettledBy,
CT.CREATEDTRANSACTIONID, CT.PAYMREFERENCE
FROM #TEMP_COMM B
LEFT JOIN CUSTTRANS CT ON CT.DATAAREAID=B.DATAAREAID AND CT.RECID=B.TRANSRECID
LEFT JOIN CUSTTRANS CT2 ON CT2.DATAAREAID=B.DATAAREAID
           AND CT2.RECID=B.OFFSETRECID  ) as B3

Open in new window


Error: Msg 156, Level 15, State 1, Line 45
Incorrect syntax near the keyword 'as'.

Any assistance is welcome. Thank you. 

Thank you. 
Avatar of Kent Olsen
Kent Olsen
Flag of United States of America image

The "as B3" clause is wrong.  Line 39 initiates a new CTE so there's no need to equivalence it at line 46.  

Drop "as B3" and complete your query.

Avatar of Zack

ASKER

Hi Kent,

The same issue, unfortunately, the last line again:


;WITH SMT AS


(SELECT B.TRANSRECID,B.OFFSETTRANSVOUCHER,B.ACCOUNTNUM,B.SETTLEAMOUNTCUR,
        B.DATAAREAID,CT2.INVOICEPROJECT,CT2.INVOICE,B.TRANSDATE,B.CREATEDDATETIME,B.SettledBy,
CT.CREATEDTRANSACTIONID, CT.PAYMREFERENCE
FROM #TEMP_COMM B
LEFT JOIN CUSTTRANS CT ON CT.DATAAREAID=B.DATAAREAID AND CT.RECID=B.TRANSRECID
LEFT JOIN CUSTTRANS CT2 ON CT2.DATAAREAID=B.DATAAREAID
           AND CT2.RECID=B.OFFSETRECID)

Open in new window

 Any other ideas.

Thank yo. 
ASKER CERTIFIED SOLUTION
Avatar of PortletPaul
PortletPaul
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial