1 Reply Latest reply on Sep 28, 2018 5:49 AM by Aditya Singh

    [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near the keyword 'With'

    Florian Kieser

      Hello,

       

      I am using the with Statement in combination with JOIN for combining several tables. In SQL everything works quite well, in Tableau sadly not.

      How can I adjust the query to get it running on Tableau Custom SQL?

       

      Error Messages:

      [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near the keyword 'With'.

      [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.

      [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near ','. [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near ')'.

       

      Querry:

      /*Bestellungen für die kein Wareneingang existiert*/      With reduced_zmdl as       (       SELECT * FROM Bestaende_ZMDL        WHERE NOT EXISTS (SELECT ID FROM Bestaende_MB51 WHERE (Bestaende_ZMDL.Einkaufsbeleg_Nr = Bestaende_MB51.Einkaufsbeleg_Nr))      ),  /*Bestände für Lagerort 8500*/      reduced_mb52 as      (           SELECT * FROM Bestaende_MB52           WHERE Bestaende_MB52.Lagerort = '8500'      )        /*JOIN von Warenbewegungen, Bedarfe und offene Bestellungen*/      SELECT Bestaende_Halbzeugbezeichnung.MaterialNr_Halbzeug, Bestaende_Halbzeugbezeichnung.Materialbezeichnung, Kalender.Datum,       SUM(MB51.Menge) as Materialbewegung,       SUM(IIF (MB51.Einkaufsbeleg_Nr IS Null, 0, MB51.Menge)) as Wareneingang,      SUM(IIF (MB51.Einkaufsbeleg_Nr IS Null, MB51.Menge, 0)) as Verbrauch,       SUM(reduced_mb52.Menge_Min) as Lagerbestand_Min,      SUM(reduced_mb52.Menge_Max) as Lagerbestand_Max,       SUM(reduced_zmdl.Bestellmenge) as Bestellungen,      -SUM(Bestaende_COHV.BedarfsMenge) as Bedarfe             , stuff((select ', ' + cast(i.Materialbeleg_Nr as varchar) + '-' + cast(i.Materialbeleg_Position as varchar) from Bestaende_MB51 i where i.Erfassungsdatum = Kalender.Datum AND i.MaterialNr_Halbzeug = Bestaende_Halbzeugbezeichnung.MaterialNr_Halbzeug for xml path('')),1 ,1 ,'') as Materialbelege       , stuff((select ', ' + cast(i.Einkaufsbeleg_Nr as varchar) + '-' + cast(i.Einkaufsbeleg_Position as varchar) from Bestaende_MB51 i where i.Erfassungsdatum = Kalender.Datum AND i.MaterialNr_Halbzeug = Bestaende_Halbzeugbezeichnung.MaterialNr_Halbzeug for xml path('')),1 ,1 ,'') as Einkaufsbelege       , stuff((select ', ' + cast(ZMDL.Einkaufsbeleg_Nr as varchar) + '-' + cast(ZMDL.Einkaufsbeleg_Position as varchar) from reduced_zmdl ZMDL where ZMDL.Bestaetigtesdatum = Kalender.Datum AND ZMDL.MaterialNr_Halbzeug = Bestaende_Halbzeugbezeichnung.MaterialNr_Halbzeug for xml path('')),1 ,1 ,'') as Bestellungsbelege             FROM Bestaende_MB51 as MB51       FULL OUTER JOIN Bestaende_COHV ON (MB51.MaterialNr_Halbzeug = Bestaende_COHV.MaterialNr_Halbzeug) AND (MB51.Fertigungsauftrag = Bestaende_COHV.Auftrag)      FULL OUTER JOIN reduced_zmdl ON (MB51.MaterialNr_Halbzeug = reduced_zmdl.MaterialNr_Halbzeug) AND (Bestaende_COHV.MaterialNr_Halbzeug = reduced_zmdl.MaterialNr_Halbzeug) AND (MB51.Einkaufsbeleg_Nr <> reduced_zmdl.Einkaufsbeleg_Nr)      FULL OUTER JOIN reduced_mb52 ON (reduced_mb52.MaterialNr_Halbzeug = MB51.MaterialNr_Halbzeug) AND (reduced_mb52.MaterialNr_Halbzeug = Bestaende_COHV.MaterialNr_Halbzeug) AND (reduced_mb52.MaterialNr_Halbzeug = reduced_zmdl.MaterialNr_Halbzeug)        FULL OUTER JOIN Bestaende_Halbzeugbezeichnung ON (MB51.MaterialNr_Halbzeug = Bestaende_Halbzeugbezeichnung.MaterialNr_Halbzeug) OR (Bestaende_COHV.MaterialNr_Halbzeug= Bestaende_Halbzeugbezeichnung.MaterialNr_Halbzeug) OR(reduced_zmdl.MaterialNr_Halbzeug = Bestaende_Halbzeugbezeichnung.MaterialNr_Halbzeug)  OR (reduced_mb52.MaterialNr_Halbzeug = Bestaende_Halbzeugbezeichnung.MaterialNr_Halbzeug)      INNER JOIN Kalender ON (Kalender.Datum = MB51.Erfassungsdatum) OR (Kalender.Datum = reduced_zmdl.Bestaetigtesdatum) OR (Kalender.Datum = Bestaende_COHV.Bedarfstermin) OR (Kalender.Datum = reduced_mb52.Datum)      GROUP BY Bestaende_Halbzeugbezeichnung.MaterialNr_Halbzeug, Bestaende_Halbzeugbezeichnung.Materialbezeichnung, Kalender.Datum