# [MSSQL] Abfrage aus zwei Tabellen mit Gruppierung über mehrere Spalten



## funkyice (4. Juni 2013)

Hallo zusammen,

ich habe mich in den letzten Wochen ein wenig mit MS SQL beschäftigt und habe auch schon einige Auswertungen und Sichten zustande bekommen, bei der jetzigen allerdings verzweifel ich ein wenig und komme einfach nicht auf die richtige Lösung.

Es gibt zwei Tabellen
1. Rechnungen (Kundengruppe, Kundennr, Kundenname, Artikelnr, Beschreibung, Menge, Betrag)
2. Gutschriften (identischer Aufbau)

Als Ergebnis soll mir später angezeigt werden, welche Kundengruppe welche Artikel gekauft bzw. gutgeschrieben bekommen hat (als Summe).
Dabei ist es erforderlich, dass die Artikelnr gruppiert werden je Kundennr, aber auch je Kundengr, also z.B.

```
Kundengr     Kundennr     Kundenname     Artikelnr      Beschreibung     Menge     Betrag(Summe)
-------------------------------------------------------------------------------------------------------------------------
003          111111       ABC             M12                             4            100,00
003          111111       ABC             M13                             9            125,00
002          222222       DEF             M12                             15           375,00
002          222222       DEF             M14                             3            120,00
002          222333       XYZ             M14                             6            240,00
001          444444       GHI             M15                             20           550,00
```

Ich würde mir später versuchen über den Report Designer von MS eine Aufklapp-Mechanik zu bauen.

Ich hoffe es ist verständlich wie ich das bräuchte.
Mein Ansatz war bislang, dass ich zunächst die Gutschriften abfrage und separat die Rechnungen, allerdings bekomme ich bei der eigentlichen Abfrage für den Aufbau des Ergebnisses nicht auf den richtigen Ansatz.


Danke für Eure Hilfe!
Sebastian


----------



## Yaslaw (4. Juni 2013)

Also mit UNION kannst du die 2 Tabellen zusammennehmen. Wobei du nicht vergessen darfst zu prüfen ob du bei einer den Wert noch mit -1 multipliziert werden muss.

Darüber kannst du dann ein GROUP BY legen. Ich weiss aber nicht ob MS SQL ein Subquery zulässt oder nicht


```
SELECT
  kundengr,
  kundenner,
  artikelnr,
  SUM(menge) AS menge,
  SUM(betrag) AS betrag
FROM
  (
    SELECT
      kundengr,
      kundenner,
      artikelnr,
      menge,
      betrag
    FROM
      rechnungen
    UNION ALL
    SELECT
      kundengr,
      kundenner,
      artikelnr,
      menge,
      betrag * -1 AS betrag
    FROM
     gutschrift
  ) alle
GROUP BY
  kundengr,
  kundenner,
  artikelnr
```

Das ist ein allgemeiner SQL-Ansatz. Ob er so in MS SQL geht kann ich dir nicht sagen.


----------



## funkyice (4. Juni 2013)

Hallo,

das die verschachtelte SELECT wäre ich nicht gekommen, hat aber geklappt.
Neben dem Betrag habe ich auch die Menge bei den Gutschriften noch * -1 multipliziert.

1000 Dank!


----------

