Announcement

Collapse
No announcement yet.

Ergebnis eines SELECT zwischenspeichern?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ergebnis eines SELECT zwischenspeichern?

    Folgendes Problem:
    Für eine ABC-Kundenanalyse möchte ich wissen welcher Umsatz jeder Kunde gemacht hat. Hierzu verwende ich folgende SELECT Anweisung:

    SELECT SUM(GesamtNetto) as Summe, KundenNr, Adressfeld1
    FROM Rechnung_s
    WHERE RechnungDatum BETWEEN '01.01.2005' AND '31.12.2005'
    GROUP BY KundenNr, Adressfeld1
    ORDER BY Summe desc

    Leider gibt es in der Tabelle Rechnung_s aber Datensätze in denen zwar die KundenNr gleich ist, aber im Adressfeld1 der Name anders ist, weil z.B. die Firmenbezeichnung irgendwann geändert wurde. Da das Adressfeld1 aber in der GROUP BY Funktion steht, bekomme ich im Ergebnis jetzt 2 oder mehr Datensätze für diese Kunden,. Was nix anderes bedeutet als das der Kunde mit der KundeNr XY in meiner Analyse mehrfach mit einzelen Umsätzen auftaucht.

    Um das zu umgehen kann ich natürlich die Select Anweisung nur über die Felder GesamtNetto und KundenNr machen, habe dann aber in der Ausgabe keine Kundenbezeichnung.

    Ich würde also gerne das Ergebnis zwischenspeichern und mit einer zweiten Abfrage die passende Kundenbezeichnung zur Kundennummer aus der Kundentabelle holen.

    Wie gehe ich am Beste von. Kann ich das Ergebnis temporär zwischenspeichern oder das Ganze vielleicht doch in EINER kombinierten Abfrage machen?

    Für Vorschläge wäre ich sehr dankbar.

    Gruß

    Thomas

  • #2
    SELECT
    SUM(GesamtNetto) as Summe,
    KundenNr,
    max(Adressfeld1) as Adresse
    FROM Rechnung_s
    WHERE RechnungDatum BETWEEN '01.01.2005' AND '31.12.2005'
    GROUP BY KundenNr
    ORDER BY Summe desc

    Dann wird nur eine Adresse genommen, was anscheinend in deinem Sinne ist.

    Gruß
    Fre

    Comment


    • #3
      Hi,
      wenn Du evtl. ein Datumsfeld zur Verfügung hast, wann der Datensatz angelegt wurde, kannst du dieses in der MAX Selektion anwenden und hast den letzten Eintrag.

      cu Michae

      Comment


      • #4
        Hi Thomas,
        wie wäre es mit einem Join auf Tabelle Kunden und das Adressfeld nicht aus Tabelle Rechnung sondern gleich auf Tabelle Kunden?
        <CODE>
        select sum(r.gesamtnetto) as SUMME, r.KundenNr, k.adressfeld1
        from Rechnung_s r
        left join kunde k on r.kundennr=k.kundennr
        where r.rechnungdatum between '01.01.2005' and '31.12.2005'
        group by r.kundennr, k.adressfeld1
        order by r.summe desc
        </CODE>
        Syntax für join natürlich entsprechend verwendeter DB und Tabellenname für tabelle Kunden, wie du sie vergeben hast.
        Gruß, Fran

        Comment

        Working...
        X