MYSQL Statement nach MSSQL Statement übersetzen - Verständnis Problem

  • C#

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von MichaHo.

    MYSQL Statement nach MSSQL Statement übersetzen - Verständnis Problem

    Hi,
    wir nutzen seit einiger Zeit einen MYSQL Server für die Eintragung von FiBu Zahlen für die GL.
    Nun habe ich diese Datenbank auf unseren MSSQL Server übertragen damit wir diese Zahlen über eine PowerApp der GL zur Verfügung stellen können.
    Soweit ist alles OK.
    Bei einer Abfrage, die mir eine Jahresübersicht liefern soll, habe ich allerdings ein Problem.
    Hier die MYSQL Abfrage:

    SQL-Abfrage

    1. SELECT monat, ae, ab, umsatz FROM (SELECT * FROM zahlen ORDER BY Datum DESC) AS zahlen_sub WHERE umsatz >0 GROUP BY monat


    in MSSQL kann ich diese Abfrage so nicht verwenden, da SQL keine ORDER BY in Sub Abfragen erlaubt, dort müsste ich mit TOP arbeiten. Dies liefert mir aber ein völlig falsches Ergebnis.

    Im Grunde läuft es so:
    Die Mitarbeiter aus der Fibu tragen jeden Abend den Auftragseingang (ae), den Auftragsbestand (ab) und den Umsatz (Umsatz) ein. Diese Zahlen sind immer kummulliert, d.h. am letzten Tag des Monats steht quasi die Summe des ganzen Monats.
    Nun möchte ich in der Jahresübersicht diese Summen je Monat anzeigen.
    In MYSQL funktioniert dies bestens mit obiger Abfrage.
    Wie kann ich diese Abfrage sauber nach SQL übersetzen, sodass ich die Daten genauso angezeigt bekomme?

    Danke Euch
    Grüße
    Micha
    "Hier könnte Ihre Werbung stehen..."
    Hi,
    @petaod, Danke Dir. Das hatte ich auch schon versucht, leider mit dem Ergebnis das die Abfrage alle Einträge aus der TB raus schmeißt.

    SQL-Abfrage

    1. SELECT Mon, OrderIncome, OrderBacklog, Sales
    2. FROM DailyDiggits
    3. WHERE Sales > 0
    4. GROUP BY Mon, OrderIncome, OrderBacklog, Sales


    Ich benötige quasi folgende Ausgabe:
    Monat
    AE
    AB
    Umsatz
    Januar
    123
    456
    789
    Februar
    321
    654
    987
    März
    231
    564
    897
    April
    ....
    ....
    ....
    Mai
    ....
    ....
    ....
    Juni
    ....
    ....
    ....

    Die Abfrage oben liefert wie gesagt alle Ergebnisse der Tabelle.
    Der Wert in AE, AB, Umsatz vom letzten des Monats müsste in der Tabelle angezeigt werden, daher gruppiert nach Monat
    "Hier könnte Ihre Werbung stehen..."
    Hallo @MrTrebron dann zeigt er auch alle an...
    Ich hänge hier mal eine Excelliste an, dort sind Beispieldaten hinterlegt, die in meiner Datenbanktabelle sind.
    Ich möchte gerne Je Monat den letzten Eintrag haben (weil der letzte Eintrag ist der kummulierte Wert des Monats)
    Dateien
    • Forum.xlsx

      (11,98 kB, 144 mal heruntergeladen, zuletzt: )
    "Hier könnte Ihre Werbung stehen..."
    So,
    nach einigem rumprobieren und 3 grauen Haaren mehr hab ich nun die Lösung gefunden:

    SQL-Abfrage

    1. SELECT A.Mon, A.OrderIncome, A.OrderBacklog, A.Sales
    2. FROM DailyDiggits AS A INNER Join (SELECT B.Mon, MAX(B.Datum) AS MaxDate FROM DailyDiggits AS B GROUP BY Mon) AS C ON A.Datum = C.MaxDate


    Liefert mir das gewünschte Ergebnis:
    "Hier könnte Ihre Werbung stehen..."