Unsaubere Daten

Hoppel

Aktiver Benutzer
Beiträge
38
Hallo,

ich habe leider Datensätze bekommen, die nicht besonders "sauber" sind.

Folgendes Problem liegt vor:

Code:
Belegnummer    Projektnummer    Datum    Kundennummer    Checkliste    Artikelnummer    Menge    Preis (Netto)    Preis (Brutto)
GUT15/605943    KRS15/1806    2015-01-13 00:00:00.000    A1  3    06-5R-075    200    3291    3916,29
GUT15/605943    KRS15/1806    2015-01-13 00:00:00.000    A1   3    06-5R-080    150    3291    3916,29
GUT15/605943    KRS15/1806    2015-01-13 00:00:00.000    A1   3    06-9R-070    160    3291    3916,29
GUT15/605943    KRS15/1806    2015-01-13 00:00:00.000    A1   3    06-9R-075    250    3291    3916,29
GUT15/605943    KRS15/1806    2015-01-13 00:00:00.000    A1   3    08-EGW-2    450    3291    3916,29
GUT15/605943    KRS15/1806    2015-01-13 00:00:00.000    A1   3    08-EGW-4    450    3291    3916,29

Der Preis bezieht sich auf alle Artikel, also auf eine Gutschrift ist in der Datenbank aber mehrmals abgelegt.

Jetzt möchte ich mit folgender Abfrage, die Summe der Gutschriften ermitteln pro Projektnummer, aber natürlich den Preis/Betrag nur einmal in meine Berechnung mit einbeziehen. Wie bewerkstellige ich das?

Mein bisheriger Ansatz, der aber alle Gutschriften aufsummiert:

Code:
select projektnummer, ROUND(sum([Preis (Netto)]),2) as GutschriftSumme from Rücksendungen
group by projektnummer
order by  GutschriftSumme desc
 
Werbung:
Naja du summierst ja auch alle Preise. Lass die Summenfunktion weg, füge ein count(*) ein und erweitere das group by um den Preis
 
Ich möchte die Spalte Preis (netto) summieren und es soll beim obigen Ausschnitt des Datensatzes nur einmal Gutschrift summiert werden. Ergebnis für oben wäre

Code:
KRS15/1806   3916,29
 
Dein Beispiel ist eh suboptilmal, weil alle Projektnummern identisch sind. Des weiteren wird in deinem gewünschten Ergebnis nichts summiert, sondern einfach nur per Distinct verdichtet.
Kann es sein, dass Du den Begriff "summieren" falsch verwendest? Du willst verdichten nicht aufsummieren.
 
Code:
select projektnummer, ROUND(sum(distinct [Preis (Brutto)] ),2) as Summe
from Rücksendungen
group by projektnummer
 
Werbung:
Abgesehen von DISTINCT wirst du das Ergebnis auch erreichen in dem du
Code:
select projektnummer, round([Preis (Brutto)],2) as Summe
from Rücksendungen
group by projektnummer,round([Preis (Brutto)],2)
nimmst, ist vielleicht der elegantere Weg. Beide Varianten sind aber anfällig falls die Daten mal nicht korrekt sind. Mit DISTINCT bekommst du dann eine andere Summe, bei der GROUP BY-Variante zwei Datensätze.
 
Zurück
Oben