Avatar of Zack
Zack
Flag for Australia asked on

SQL - Syntax Query Damn Bracket :)

Hi EE,

Having an issue with the last bracket in this query;

SELECT  DISTINCT A.* FROM (SELECT
                     a.ACCOUNTNUM, CAST(a.TRANSDATE AS date) AS transdate, a.VOUCHER, a.INVOICE, a.CURRENCYCODE, a.TXT, c.NAME, CAST(a.DUEDATE AS date)
                      AS duedate, d.CUSTGROUP, a.AMOUNTCUR, a.SETTLEAMOUNTCUR, a.SETTLEAMOUNTMST, a.SETTLEAMOUNTMST AS ORIGSETTELEMST, a.AMOUNTMST,
                      d.CREDITMAX, a.LASTSETTLEVOUCHER, f.INVOICEID AS lastsettleinvoice, a.TRANSTYPE, a.EXCHADJUSTMENT AS SELISIHKURS,
                      CASE WHEN A.AMOUNTMST < 0 THEN A.AMOUNTMST ELSE 0 END AS MSTCREDIT,
                      CASE WHEN A.AMOUNTCUR < 0 THEN A.AMOUNTCUR ELSE 0 END AS CURCREDIT, CASE WHEN A.AMOUNTMST > 0 THEN A.AMOUNTMST ELSE 0 END AS MSTDEBET,
                       CASE WHEN A.AMOUNTCUR > 0 THEN A.AMOUNTCUR ELSE 0 END AS CURDEBET,
                      CASE WHEN a.AMOUNTMST - a.SETTLEAMOUNTMST <> 0 THEN a.AMOUNTMST - a.SETTLEAMOUNTMST + a.EXCHADJUSTMENT ELSE a.AMOUNTMST - a.SETTLEAMOUNTMST
                       END AS SISA, CASE WHEN A.CURRENCYCODE <> 'AUD' THEN a.AMOUNTCUR - a.SETTLEAMOUNTCUR ELSE 0 END AS SISACUR, CASE WHEN LEFT(A.VOUCHER, 4)
                      <> 'CINV' THEN A.VOUCHER ELSE '' END AS REFERENSI
                 , CASE WHEN  LEFT(A.INVOICE  ,3) IN( 'FTX', 'CFT','NK/','ND/') and LEFT(A.INVOICE  ,3) not  IN( 'SCN') THEN 'FREETEXT'
                 ELSE CASE WHEN  SUBSTRING(A.INVOICE,2,2)='KR' THEN 'PAYMENT'
                 ELSE CASE WHEN  LEFT(A.INVOICE ,3) IN( 'SCN') THEN 'RETURN'
                 ELSE CASE WHEN  LEFT(A.VOUCHER ,4)  IN ('15TM','16TM','ARME') THEN 'PAYMENT'
                 ELSE CASE WHEN  A.AMOUNTMST > 0 AND LEFT(A.INVOICE  ,3)NOT IN( 'FTX', 'CFT', 'SCN','NK/','ND/') AND LEFT(A.VOUCHER ,4) NOT IN ('15TM','16TM','ARME') AND SUBSTRING(A.INVOICE,2,2)<>'KR' THEN 'PENJUALAN'
                 --ELSE CASE WHEN  A.AMOUNTMST > 0 AND LEFT(A.INVOICE  ,3)NOT IN( 'FTX', 'CFT', 'SCN','NK/','ND/') AND LEFT(A.VOUCHER ,4)  IN ('15TM','16TM','ARME') THEN 'PAYMENT'
                 ELSE CASE WHEN  A.AMOUNTMST < 0 AND LEFT(A.INVOICE  ,3) NOT IN( 'FTX', 'CFT','SCN','NK/','ND/') THEN 'PAYMENT'
                 END END END END END END
               REPORT_POST ,a.RECID
FROM         CUSTTRANS AS a LEFT OUTER JOIN
                      CUSTTABLE AS b ON a.ACCOUNTNUM = b.ACCOUNTNUM LEFT OUTER JOIN
                      DIRPARTYTABLE AS c ON b.PARTY = c.RECID LEFT OUTER JOIN
                      CUSTTABLE AS d ON a.ACCOUNTNUM = d.ACCOUNTNUM LEFT OUTER JOIN
                      CUSTINVOICEJOUR AS f ON a.LASTSETTLEVOUCHER = f.LEDGERVOUCHER LEFT OUTER JOIN)) A

Open in new window

Msg 102, Level 15, State 1, Line 24
Incorrect syntax near ')'.

Any assistance is appreciated.

Thank you. 

SQLMicrosoft SQL Server

Avatar of undefined
Last Comment
Zack

8/22/2022 - Mon
Ryan Chong

not too sure, but quick look that there was an extra ")" at last...

CUSTINVOICEJOUR AS f ON a.LASTSETTLEVOUCHER = f.LEDGERVOUCHER LEFT OUTER JOIN)) A

Open in new window

so just try remove and execute again
Zack

ASKER
Hi Ryan,

Same issue again when I remove a bracket:



SELECT  DISTINCT A.* FROM (SELECT
                     a.ACCOUNTNUM, CAST(a.TRANSDATE AS date) AS transdate, a.VOUCHER, a.INVOICE, a.CURRENCYCODE, a.TXT, c.NAME, CAST(a.DUEDATE AS date)
                      AS duedate, d.CUSTGROUP, a.AMOUNTCUR, a.SETTLEAMOUNTCUR, a.SETTLEAMOUNTMST, a.SETTLEAMOUNTMST AS ORIGSETTELEMST, a.AMOUNTMST,
                      d.CREDITMAX, a.LASTSETTLEVOUCHER, f.INVOICEID AS lastsettleinvoice, a.TRANSTYPE, a.EXCHADJUSTMENT AS SELISIHKURS,
                      CASE WHEN A.AMOUNTMST < 0 THEN A.AMOUNTMST ELSE 0 END AS MSTCREDIT,
                      CASE WHEN A.AMOUNTCUR < 0 THEN A.AMOUNTCUR ELSE 0 END AS CURCREDIT, CASE WHEN A.AMOUNTMST > 0 THEN A.AMOUNTMST ELSE 0 END AS MSTDEBET,
                       CASE WHEN A.AMOUNTCUR > 0 THEN A.AMOUNTCUR ELSE 0 END AS CURDEBET,
                      CASE WHEN a.AMOUNTMST - a.SETTLEAMOUNTMST <> 0 THEN a.AMOUNTMST - a.SETTLEAMOUNTMST + a.EXCHADJUSTMENT ELSE a.AMOUNTMST - a.SETTLEAMOUNTMST
                       END AS SISA, CASE WHEN A.CURRENCYCODE <> 'AUD' THEN a.AMOUNTCUR - a.SETTLEAMOUNTCUR ELSE 0 END AS SISACUR, CASE WHEN LEFT(A.VOUCHER, 4)
                      <> 'CINV' THEN A.VOUCHER ELSE '' END AS REFERENSI
                 , CASE WHEN  LEFT(A.INVOICE  ,3) IN( 'FTX', 'CFT','NK/','ND/') and LEFT(A.INVOICE  ,3) not  IN( 'SCN') THEN 'FREETEXT'
                 ELSE CASE WHEN  SUBSTRING(A.INVOICE,2,2)='KR' THEN 'PAYMENT'
                 ELSE CASE WHEN  LEFT(A.INVOICE ,3) IN( 'SCN') THEN 'RETURN'
                 ELSE CASE WHEN  LEFT(A.VOUCHER ,4)  IN ('15TM','16TM','ARME') THEN 'PAYMENT'
                 ELSE CASE WHEN  A.AMOUNTMST > 0 AND LEFT(A.INVOICE  ,3)NOT IN( 'FTX', 'CFT', 'SCN','NK/','ND/') AND LEFT(A.VOUCHER ,4) NOT IN ('15TM','16TM','ARME') AND SUBSTRING(A.INVOICE,2,2)<>'KR' THEN 'PENJUALAN'
                 --ELSE CASE WHEN  A.AMOUNTMST > 0 AND LEFT(A.INVOICE  ,3)NOT IN( 'FTX', 'CFT', 'SCN','NK/','ND/') AND LEFT(A.VOUCHER ,4)  IN ('15TM','16TM','ARME') THEN 'PAYMENT'
                 ELSE CASE WHEN  A.AMOUNTMST < 0 AND LEFT(A.INVOICE  ,3) NOT IN( 'FTX', 'CFT','SCN','NK/','ND/') THEN 'PAYMENT'
                 END END END END END END
               REPORT_POST ,a.RECID
FROM         CUSTTRANS AS a LEFT OUTER JOIN
                      CUSTTABLE AS b ON a.ACCOUNTNUM = b.ACCOUNTNUM LEFT OUTER JOIN
                      DIRPARTYTABLE AS c ON b.PARTY = c.RECID LEFT OUTER JOIN
                      CUSTTABLE AS d ON a.ACCOUNTNUM = d.ACCOUNTNUM LEFT OUTER JOIN
                      CUSTINVOICEJOUR AS f ON a.LASTSETTLEVOUCHER = f.LEDGERVOUCHER LEFT OUTER JOIN) A

Open in new window

PortletPaul

Remove one of the brackets just prior to the alias a
 )) A

Should be

) A

+edit.
This was referring to the first query
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
SOLUTION
PortletPaul

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
ASKER CERTIFIED SOLUTION
Ryan Chong

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
SOLUTION
Arifhusen Ansari

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
Zack

ASKER
Staring me in the face the whole time thanks guys. 
Zack

ASKER
Hi Arifhusen Ansari 

Sorry friend didn't refresh my screen before closing the ticket.

My apologies.