Ich versuche, eine Abfrage (Zweck: manuelle DB-Tests) zu erstellen, die die Zeilen des vorherigen/aktuellen/nächsten Geschäftsjahres und dann die SUM (Umsatz)Daten für Geschäftsjahr aus Tabelle ohne Datum Spalten
erhalten würdeBei
(1) der unten stehenden Tabelle,
und
(2) Geschäftsjahr (FY) = MÄRZ-Februar
Wenn Zurück FY - Dann 2 Reihen: 2016/1 bis 2016/2
Wenn Aktuelle FY - Dann 12 Reihen: von 2016/3 bis 2017/2 (Jahr/Monat)
Wenn Zukunft FY - Dann 1 Reihe: 2017/3
+--------------+---------------+----------+
| Year (num) | Month (num) | Turnover |
+--------------+---------------+----------+
| 2016 | 1 | 1000 |
+--------------+---------------+----------+
| 2016 | 2 | 2000 |
+--------------+---------------+----------+
| 2016 | 3 | 3000 |
+--------------+---------------+----------+
| 2016 | 4 | 4000 |
+--------------+---------------+----------+
| 2016 | 5 | 2000 |
+--------------+---------------+----------+
| 2016 | 6 | 1000 |
+--------------+---------------+----------+
| 2016 | 7 | 2000 |
+--------------+---------------+----------+
| 2016 | 8 | 1000 |
+--------------+---------------+----------+
| 2016 | 9 | 2000 |
+--------------+---------------+----------+
| 2016 | 10 | 3000 |
+--------------+---------------+----------+
| 2016 | 11 | 4000 |
+--------------+---------------+----------+
| 2016 | 12 | 5000 |
+--------------+---------------+----------+
| 2017 | 1 | 6000 |
+--------------+---------------+----------+
| 2017 | 2 | 2000 |
+--------------+---------------+----------+
| 2017 | 3 | 1000 |
+--------------+---------------+----------+
Die beste Lösung, die ich gefunden habe, ist die folgende Abfrage und ändern Sie die Werte, um zwischen Jahren zu wechseln. Es fühlt sich hacky an, weil ich eine extra Lösung mit sysdate erstellt habe und nach NOT NULL suche. Gibt es einen eleganteren Weg?
WITH CTE AS (
SELECT
CASE
WHEN Month BETWEEN 3 AND 12 AND Year = 2016
THEN sysdate
WHEN Month BETWEEN 1 AND 2 AND Year = 2017
THEN sysdate
END case_statement_date,
year, month, turnover, FROM Table
)
SELECT sum(turnover) FROM CTE
WHERE case_statement_date IS NOT NULL
;
Bearbeiten Sie Ihre Frage und liefern Sie Beispieldaten und gewünschte Ergebnisse. –
Hast du die Frage überhaupt gelesen? Beispieldaten = diese große Tabelle in der Mitte. Gewünschte Ergebnisse: Wann - Dann. – Andrejs