Ich habe eine Abfrage, die mir Zeilen in Tabelle A zeigen soll, die nicht genug kürzlich aktualisiert wurden. (Jede Zeile soll nach "month_no" innerhalb von 2 Monaten aktualisiert werden.):Verwendung eines Alias in einer WHERE-Klausel
SELECT A.identifier
, A.name
, TO_NUMBER(DECODE(A.month_no
, 1, 200803
, 2, 200804
, 3, 200805
, 4, 200806
, 5, 200807
, 6, 200808
, 7, 200809
, 8, 200810
, 9, 200811
, 10, 200812
, 11, 200701
, 12, 200702
, NULL)) as MONTH_NO
, TO_NUMBER(TO_CHAR(B.last_update_date, 'YYYYMM')) as UPD_DATE
FROM table_a A
, table_b B
WHERE A.identifier = B.identifier
AND MONTH_NO > UPD_DATE
Die letzte Zeile in der WHERE-Klausel verursacht einen "ORA-00904 Ungültige Identifier" Fehler. Es ist unnötig zu sagen, dass ich nicht die gesamte DECODE-Funktion in meiner WHERE-Klausel wiederholen möchte. Irgendwelche Gedanken? (Beide Fixes und Umgehungen akzeptiert ...)
Dies wäre ein interessanter Ansatz, können Sie einen Code geben? – rob5408
die gleiche Regel, wo gilt, so ist dies keine Lösung. – Alexey
Ich bin auf MySQL (5.5) fest, weiß nicht, ob dies für Oracle gilt. ABER: 'SELECT CONCAT (Namen, Nachname) AS x VON Kunden mit X WIE '% a%'' funktioniert, während 'SELECT CONCAT (Namen, Nachname) AS x VON Kunden WHERE x wie '% a%' 'scheitert (" Unbekannte Spalte 'x' in 'where-Klausel' ") – fr13d