T-SQL Fehler bei Abfrage
Guten Tag,
ich habe hier eine Abfrage, die von einem nichtmehr verfügbaren Dienstleister stammt.
Diese wurde angepasst und funktioniert jetzt nichtmehr.
Hier die Abfrage:
-- GD ermitteln
update #wt
set GDK= (select AVG([Preis]) from #wt where ID between t.ID - @x + 1 and t.ID)
from #wt as t
UPDATE #erg
set Datumv2 = #wt.Datum
, Preisv2 = #wt.[Preis]
, Preis_GDv2 = #wt.GDK
from #wt inner join #erg
insert into [A_Ergebnis24v2]
select * from #erg
Der SQL Server gibt folgende Fehlermeldung aus: Syntaxfehler bei Zeile XX insert into
Ich verstehe nicht was hier an der Syntax falsch sein soll, die Tabellen #wt und #erg werden quasi in [A_Ergebnis24v2] zusammengeführt.
Kann jemand mit diesem Code Schnipsel etwas anfangen?
Alternativ wäre ich über eine Hilfestellung wie man eine solche Abfrage "debuggt" sehr dankbar.
Vielen Dank und Frohe Ostern im Vorraus
Attix22
ich habe hier eine Abfrage, die von einem nichtmehr verfügbaren Dienstleister stammt.
Diese wurde angepasst und funktioniert jetzt nichtmehr.
Hier die Abfrage:
-- GD ermitteln
update #wt
set GDK= (select AVG([Preis]) from #wt where ID between t.ID - @x + 1 and t.ID)
from #wt as t
UPDATE #erg
set Datumv2 = #wt.Datum
, Preisv2 = #wt.[Preis]
, Preis_GDv2 = #wt.GDK
from #wt inner join #erg
insert into [A_Ergebnis24v2]
select * from #erg
Der SQL Server gibt folgende Fehlermeldung aus: Syntaxfehler bei Zeile XX insert into
Ich verstehe nicht was hier an der Syntax falsch sein soll, die Tabellen #wt und #erg werden quasi in [A_Ergebnis24v2] zusammengeführt.
Kann jemand mit diesem Code Schnipsel etwas anfangen?
Alternativ wäre ich über eine Hilfestellung wie man eine solche Abfrage "debuggt" sehr dankbar.
Vielen Dank und Frohe Ostern im Vorraus
Attix22
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 165020
Url: https://administrator.de/contentid/165020
Ausgedruckt am: 05.11.2024 um 21:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo,
Hoffentlich hast du noch den Quellcode von vor der Änderung!
Ohne das du den entzsprechenden Code mit allen relaveanten Daten hier angibst, können dir hier nur mit einer Schnutzigen Galskugel Ratschläge gegeben werden. Nur du hast den ganzen Quellcode. Nur du kennst den aufbau deiner Tabellen. Nur du weisst ob es sich um weitere abfrage / SP oder sonst noch was handelt.
Ohne weitere hinweise auf OS, Datenbanksystem, Entwicklungsumgebung usw wird eine genaue Hilfestellung fast unmöglich sein.
Gruß,
Peter
Hoffentlich hast du noch den Quellcode von vor der Änderung!
Der SQL Server gibt folgende Fehlermeldung aus: Syntaxfehler bei Zeile XX insert into
Zeile XX ist hier nirgendswo!Ich verstehe nicht was hier an der Syntax falsch sein soll, die Tabellen #wt und #erg werden quasi in [A_Ergebnis24v2]
zusammengeführt.
Was wird hier zusammengeführt? Woraus setzt sich A_Ergenbis24v2 zusammen?zusammengeführt.
Ohne das du den entzsprechenden Code mit allen relaveanten Daten hier angibst, können dir hier nur mit einer Schnutzigen Galskugel Ratschläge gegeben werden. Nur du hast den ganzen Quellcode. Nur du kennst den aufbau deiner Tabellen. Nur du weisst ob es sich um weitere abfrage / SP oder sonst noch was handelt.
Kann jemand mit diesem Code Schnipsel etwas anfangen?
Ja, aber sehr wenig.Alternativ wäre ich über eine Hilfestellung wie man eine solche Abfrage "debuggt" sehr dankbar.
Nun, wie du so schön schreibst:Diese wurde angepasst und funktioniert jetzt nichtmehr
Schau dir alle Änderungen von da ging es noch bis zu jetzt geht es nicht mehr an und versuche zu verstehen was dort gemacht werden soll / wird.Ohne weitere hinweise auf OS, Datenbanksystem, Entwicklungsumgebung usw wird eine genaue Hilfestellung fast unmöglich sein.
Gruß,
Peter
Ich würde mal ins blaue Tippen, da die Infos leider nichts anderes zulassen,
dass die Tabelle A_Ergebnis24v2 mehr Spalten hat #erg im speziellen wahrscheinlich
einen auto increment wert, der automatisch befüllt wird.
Wenn meine Vermutung zutrifft und es 4 spalten gibt eine id auto increment z.B. müsste der Insert folgendermaßen aussehen:
insert into [A_Ergebnis24v2] (SpalteA, SpalteB, SpalteC)
select * from #erg
Wobei SpalteA dann für Datumv2, SpalteB für Preisv2 und SpalteC für Preis_GDv2 mit den entsprechenden richtigen Spaltennamen stehen.
Aber wie gesagt, das ist nur eine Vermutung, weil es praktisch keine Infos gibt.
Gruß
dass die Tabelle A_Ergebnis24v2 mehr Spalten hat #erg im speziellen wahrscheinlich
einen auto increment wert, der automatisch befüllt wird.
Wenn meine Vermutung zutrifft und es 4 spalten gibt eine id auto increment z.B. müsste der Insert folgendermaßen aussehen:
insert into [A_Ergebnis24v2] (SpalteA, SpalteB, SpalteC)
select * from #erg
Wobei SpalteA dann für Datumv2, SpalteB für Preisv2 und SpalteC für Preis_GDv2 mit den entsprechenden richtigen Spaltennamen stehen.
Aber wie gesagt, das ist nur eine Vermutung, weil es praktisch keine Infos gibt.
Gruß
Moin Mad Max,
Nein, das muss nicht.
M$ hält sich für besser SQLisch sprechend als diese ISO-gläubigen Weicheier aka der Rest des Planeten.
Laut M$ reicht
[Unter der Bedingung, das die Spaltennamen in beiden Tabellen gleich sind und es in einer Tabelle PK, in der anderen FK ist etc.]
Aber ist halt sauschlechter Stil und senkt die Wartbarkeit nooch tiefer als die fehlenden Kommentare
Grüße
Biber
Nein, das muss nicht.
M$ hält sich für besser SQLisch sprechend als diese ISO-gläubigen Weicheier aka der Rest des Planeten.
Laut M$ reicht
.... QuellTabelle1 [Join-Typ] Tabelle [ON (Join Bedingung)]
--> d.h. die komplette [ON (Join Bedingung)] ist optional.[Unter der Bedingung, das die Spaltennamen in beiden Tabellen gleich sind und es in einer Tabelle PK, in der anderen FK ist etc.]
Aber ist halt sauschlechter Stil und senkt die Wartbarkeit nooch tiefer als die fehlenden Kommentare
Grüße
Biber
Zitat von @MadMax:
Moin,
so ganz spontan würde ich mal sagen, da fehlen die Spalten fürs join:
Gruß, Mad Max
Moin,
so ganz spontan würde ich mal sagen, da fehlen die Spalten fürs join:
> UPDATE #erg
> set Datumv2 = #wt.Datum
> , Preisv2 = #wt.[Preis]
> , Preis_GDv2 = #wt.GDK
> from #wt inner join #erg
>
Gruß, Mad Max
Hi, warum sollte es sich ans insert wieder irgendwas dran Joinen, wenn er sich im Schritt vorher #erg komplett per update befüllt?
Beim update Schritt ist #erg mit allen 3 spalten befüllt.
Puh, eben hast Du mich aber erschreckt
Aber Du liegst falsch, selbst der SQL Server braucht ein "on x = y", daß es optional wäre, kann sich allenfalls auf den cross join beziehen.
Und der Fehler wird dann beim Folgebefehl angezeigt (hier das insert), weil an der Stelle ja das "on" erwartet wird.
Gruß, Mad Max
Aber Du liegst falsch, selbst der SQL Server braucht ein "on x = y", daß es optional wäre, kann sich allenfalls auf den cross join beziehen.
Und der Fehler wird dann beim Folgebefehl angezeigt (hier das insert), weil an der Stelle ja das "on" erwartet wird.
Gruß, Mad Max