Link to home
Start Free TrialLog in
Avatar of Zack
ZackFlag 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. 

Avatar of Ryan Chong
Ryan Chong
Flag of Singapore image

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
Avatar of 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

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

Should be

) A

+edit.
This was referring to the first query
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
ASKER CERTIFIED SOLUTION
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
SOLUTION
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
Avatar of Zack

ASKER

Staring me in the face the whole time thanks guys. 
Avatar of Zack

ASKER

Hi Arifhusen Ansari 

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

My apologies.