MSSQL "Komplizierter" Query mit mehreren SELECTS und Summieren

  • C#

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von xChRoNiKx.

    MSSQL "Komplizierter" Query mit mehreren SELECTS und Summieren

    Hallo,

    ich habe 4 Tabellen:

    Artikel Spalten:
    ArtikelId
    Artikelname

    BestellPositionen Spalten:
    ArtikelId
    ArtikelMenge
    Bestelldatum

    SelbstAngelegteRetourenPositionen Spalten
    ArtikelId
    ArtikelMenge
    Retourendatum

    ShopAngelegteRetourenPositionen Spalten
    ArtikelId
    ArtikelMenge
    Retourendatum

    Nun möchte ich gerne PRO Artikel wissen wieviele Verkauft wurden in den letzten XY Tagen.
    Ich möchte auch wissen wieviele Retouren gesamt es gab in den letzten XY Tagen.

    Also dachte ich ich mache so:

    SQL-Abfrage

    1. SELECT ArtikelTabelle.Artikelname,
    2. ( SELECT SUM(BestellTabelle.Artikelmenge) FROM BestellTabelle WHERE BestellTabelle.ArtikelId = ArtikelTabelle.ArtikelId ) AS Bestellungen,
    3. ( SELECT SUM(SelbstAngelegteRetourenPositionen.ArtikelMenge) FROM SelbstAngelegteRetourenPositionen WHERE SelbstAngelegteRetourenPositionen.ArtikelId = ArtikelTabelle.ArtikelId ) AS RetoureSelbst,
    4. ( SELECT SUM(ShopAngelegteRetourenPositionen.ArtikelMenge) FROM ShopAngelegteRetourenPositionen WHERE ShopAngelegteRetourenPositionen.ArtikelId = ArtikelTabelle.ArtikelId ) AS RetoureShop
    5. FROM ArtikelTabelle ORDER BY Verkauft DESC


    Ja jetzt habe ich (Datum hab ich mal weggelassen spielt jetzt keine Rolle für das was ich suche) die Verkäufe, RetourenSelbst und RetourenShop...
    Allerdings würde ich gerne haben das ich RetoureSelbst und RetoureShop noch Addiere als Spalte Retouren und stattdessen nur die Spalten:

    Artikelname - Bestellungen - Retouren

    habe. Könnt ihr mir helfen was ich hier falsch mache? Ich brauch das so da ich gerne jeden Artikel haben will. Jemand ne Idee?
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

    xChRoNiKx schrieb:

    Nun möchte ich gerne PRO Artikel wissen wieviele Verkauft wurden in den letzten XY Tagen.
    Ich möchte auch wissen wieviele Retouren gesamt es gab in den letzten XY Tagen.
    In einem Select-Command?
    Das bezweifel ich, dass das möglich ist.

    Zum wieviele verkauft wurden musst du mit Group By arbeiten.
    Also iwie zusammenjoinen und iwie ein

    SQL-Abfrage

    1. Select Sum(...) Artikel.ID, Artikel.Name
    2. From Artikel
    3. join...
    4. join ...
    5. join...
    6. Group By Artikel.ID
    dranmachen.
    Die Zeit-Bedingung muss natürlich auch rein, und da gibts glaub zwei Möglichkeiten (vielleicht auch nicht):
    Einmal als Where-Klausel vor dem Group
    Oder als Having-Klausel nach dem Group
    Zu Having studiere die Doku.

    Mehr kann ich dazu nicht bringen - ich kriege von Sql Kopfweh.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Hi,

    also mein sql im start post funktioniert so.
    Ich bekomme ja die einzelnen Werte alle raus und die sind auch richtig.

    Mir fehlt jetzt halt nur irgendwie das addieren der 2 Retouren Werte in einen.

    Ich schau morgen mal ob ich das evtl mit nem join und so hin bekomme oder so ansonsten bin ich bis morgen gerne offen weitere Vorschläge.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

    xChRoNiKx schrieb:

    also mein sql im start post funktioniert so.
    ups - hatte ich nicht verstandne.

    xChRoNiKx schrieb:

    Allerdings würde ich gerne haben das ich RetoureSelbst und RetoureShop noch Addiere als Spalte Retouren und stattdessen nur die Spalten:

    Artikelname - Bestellungen - Retouren
    ja, mach das doch:

    SQL-Abfrage

    1. SELECT ArtikelTabelle.Artikelname,
    2. ( SELECT SUM(BestellTabelle.Artikelmenge) FROM BestellTabelle WHERE BestellTabelle.ArtikelId = ArtikelTabelle.ArtikelId ) AS Bestellungen,
    3. ( SELECT SUM(SelbstAngelegteRetourenPositionen.ArtikelMenge) FROM SelbstAngelegteRetourenPositionen WHERE SelbstAngelegteRetourenPositionen.ArtikelId = ArtikelTabelle.ArtikelId
    4. + SUM(ShopAngelegteRetourenPositionen.ArtikelMenge) FROM ShopAngelegteRetourenPositionen WHERE ShopAngelegteRetourenPositionen.ArtikelId = ArtikelTabelle.ArtikelId) AS Retoure
    5. FROM ArtikelTabelle ORDER BY Verkauft DESC
    Ist ja Sql - je unleserlicher desto besser ;)