Jump to content

SQL Abfrage CAST?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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*
, CASTnderungszeitpunkt 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

 

Link zu diesem Kommentar

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.

Link zu diesem Kommentar
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: 

  1. FROM – inputs are evaluated first
  2. JOIN
  3. WHERE
  4. GROUP BY
  5. HAVING
  6. SELECT
  7. DISTINCT
  8. ORDER BY
  9. TOP – this is the last step

aus T-SQL processing order

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...