annabert - Di 03.08.10 11:09
Titel: Oracle SQL Abfrage, äußerer Wert an inneren übergeben
Hallo,
bin Anfänger was SQL betrifft, und finde die Lösung nicht:
Ich möchte in einer einzelnen Abfrage aus zwei Tabellen (WORKCENTER, KALENDER) zu bestimmten Einträgen in der Tabelle WORKCENTER das Datum aus einer bestimmten Zeile in der Tabelle KALENDER - abhängig von dem Eintrag in WORKCENTER - holen. Beispiel:
Workcenter 1 hat ANZAHL_TAGE = 7: Aus KALENDER soll heute plus 7 Arbeitstage ausgegeben werden.
Workcenter 2 hat ANZAHL_TAGE = 12: Aus KALENDER soll heute plus 12 Arbeitstage ausgegeben werden.
...
Gewünschtes Ergebnis: (Numerischer Wert des heutigen Tages ist 14824)
WORKCENTER_ID MAX_KALENDER_TAG
1 14833
2 14840
...
Nur zum Verständnis der Zahlen: 14824 = numerischer Wert des heutigen Tages, + 7 = 14831, dazwischen liegt ein Wochenende, also plus 2.
Hatte mir das so vorgestellt:
SQL-Anweisung
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| SELECT WORKCENTER.ID AS WORKCENTER_ID, MAX_KALENDER_TAG FROM WORKCENTER, (SELECT MAX(TAG) AS MAX_KALENDER_TAG FROM (SELECT TAG FROM KALENDER WHERE TAG > TRUNC(TO_NUMBER(SYSDATE - TO_DATE('01.01.1970', 'DD.MM.YYYY'))) WHERE KALENDER.ARBEITSTAG = 'J' ORDER BY KALENDER.TAG ) WHERE ROWNUM <= WORKCENTER.ANZAHL_TAGE ) WHERE WORKCENTER.ID IN ( 1, 2, 6, 7, 9) |
Der Oracle SQL Developer bringt mir die Fehlermeldung dass WORKCENTER.ANZAHL_TAGE unbekannt ist, was auch einleuchtet, sofern die SELECT Abfragen von innen nach aussen abgehandelt werden (ist das so?). Könnt ihr mir vielleicht sagen wie die Abfrage aussehen muss?
Ich hoffe man versteht was ich vorhatte...
Gruß