akku 0 Geschrieben 5. August 2022 Melden Teilen Geschrieben 5. August 2022 Hallo zusammen, ich bin noch recht neu im Thema microsoft sql. Trotzdem muss ich damit arbeiten und das macht mir auch richtig Spass. Vieles habe ich bis jetzt selbst rausgefunden. Nun habe ich aber ein Problem, bei dem ich nicht weiter komme. Vielleicht finde ich hier die benötigte Hilfe. Ich mache folgende Datenbankabfrage: select* , CAST(Änderungszeitpunkt AS date) AS Verladung from Picks_erledigt where Picks_erledigt.Lagerort = 662 and Picks_erledigt.Auftragstyp = 'A' and Picks_erledigt.Ziel = 1000 and Picks_erledigt.[Ziel neu] < 1000 Das läuft auch ohen Fehler. Den CAST mache ich, weil ich eine Spalte nach Datum einschränken will, aktuell aber der Typ DateTime verwendet wird. Wenn ich nun noch die folgende Zeile ans Ende anfüge, um nach Datum einzuschränken, and Picks_erledigt.Verladung > '2022-07-26' bekomme ich den Fehler: Meldung 207, Ebene 16, Status 1, Zeile 1 Ungültiger Spaltenname "Verladung". Was ist mein Fehler bzw. wie muss der code richtig lauten? Ich freue mich schon auf Eure Untertützung Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 5. August 2022 Melden Teilen Geschrieben 5. August 2022 Wieso rechnest du nicht mit dem DateTime? Btw. Gewöhne dir "select *" ab. Das will man nicht. Zitieren Link zu diesem Kommentar
akku 0 Geschrieben 5. August 2022 Autor Melden Teilen Geschrieben 5. August 2022 Hallo Dukel, wie muss das denn aussehen, wenn ich mit DateTime rechnen will? Die Uhrzeit will ich ignorieren und alle Datensätze ab einem bestimmten Datum im Ergebnis erhalten. Select * mache ich deswegen, weil ich tatsächlich alle Spalten benötige und es ein paar mehr sind. Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 5. August 2022 Melden Teilen Geschrieben 5. August 2022 Wenn Du aus einem DateTime nur Date brauchst, musst Du den Wert passend formatieren: https://www.mssqltips.com/sqlservertip/2655/format-sql-server-dates-with-format-function/ Damit kann man dann rechnen. Ich glaube der Fehler kommt aber daher, weil Du das mit AS ja neu benennst und nicht so aus der Tabelle kommt. Falls ja, dann probier es mal ohne den Tabellennamen. Select * ist der Faulheit des Entwicklers geschuldet, das fällt dir früher oder später auf die Füße und ist außerdem auch schlechter Stil. Zitieren Link zu diesem Kommentar
t-sql 18 Geschrieben 9. August 2022 Melden Teilen Geschrieben 9. August 2022 Am 5.8.2022 um 17:11 schrieb akku: Was ist mein Fehler bzw. wie muss der code richtig lauten? Ich freue mich schon auf Eure Untertützung Dein Fehler ist sehr einfach zu erklären. Im where Teil ist der Alias aus dem Select Teil noch nicht bekannt. Die Ausführungsreihenfolge ist nämlich: FROM – inputs are evaluated first JOIN WHERE GROUP BY HAVING SELECT DISTINCT ORDER BY TOP – this is the last step aus T-SQL processing order Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 10. August 2022 Melden Teilen Geschrieben 10. August 2022 Sowas sollte gehen: SELECT Änderungszeitpunkt FROM Picks_erledigt WHERE Änderungszeitpunkt between '2022-07-26T00:00:00.000' and '2022-07-26T23:59:59.000'; bzw. SELECT Änderungszeitpunkt FROM Picks_erledigt WHERE Änderungszeitpunkt > '2022-07-26T00:00:00.000'; Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 10. August 2022 Melden Teilen Geschrieben 10. August 2022 Und ganz kurz: Spalten, die man in der Select-Klausel mit AS generiert, kann man nicht in der Where-Klausel verwenden. Denn die ist dort noch nicht existent. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.