Hierachische Struktur zusammenfassen

  • VB.NET
  • .NET 4.5

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von rrobbyy.

    Hierachische Struktur zusammenfassen

    Hallo zusammen,
    folgendes Szenario
    Tabelle 1: Wie viel bestellt ein Kunde von einem Artikel
    Tabelle 2: woraus besteht der Artikel, was der Kunde bestellt (Strukturliste) (1:N)

    Tabelle 2 beinhaltet eine Baugruppenstruktur (eine Baugruppe besteht aus einzelnen Artikeln oder/und auch aus weiteren Baugruppen) mit theoretisch unendlich vielen Ebenen.
    Die Mengen in der Tabelle 2 beziehen sich immer auf 1. Das bedeutet, dass wenn ein Kunde 2 Artikel bestellt, alles mit 2 multipliziert wird.
    Baugruppen, die ebenfalls mehrfach (x Mal) vorhanden sind, werden ebenfalls damit multipliziert. Unterbaugruppen werden mit der übergeordneten Baugruppe multipliziert, usw.

    Im Anhang exemplarischer Aufbau:
    ROWVORGANG = Der Auftrag
    ROWVORGANGPOS = der Artikel, der bestellt
    ROWVORGANGPOSSTL = Bauteile des Artikels, welcher bestellt wird
    ROWVERWEIS = Übergeordnete Ebene

    Da sich alle Mengen in der Strukturstückliste auf 1 bezieht, bekomme ich nicht es nicht hin, eine Bestellliste zu erzeugen, die gleiche Artikel zusammenfasst und die Mengen entsprechend Ihren Baugruppenmengen multipliziert UND gleiche Artikel kumuliert...

    in VB habe ich über eine Rekursion die Struktur abbilden können, aber das hilft mir nix....

    Es wäre super, wenn jemand eine Idee dazu hat...
    Dateien
    • bg.xlsx

      (19,14 kB, 5 mal heruntergeladen, zuletzt: )
    1. Was für ne Tabelle2?
    2. Mir ist nicht klar, wo Du jetzt arbeiten willst. Excel? Visual Studio & VB.Net?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    Neu

    Der Anhang hat nur Tabelle 2...Tabelle 1 können wir uns sparen, weil die dafür vorherst nicht relevant ist...

    Tatsächlich ist mir das egal, wo ich ich diese Liste erstellen kann. Dahingehend keine "besondere" Anforderung ...Idealerweise in SQL oder VB...Es kann auch ein SSRS-Bericht sein...aber dafür brauche ich auch eine SQL-Abfrage...

    Die Excel aus dem Anhang ist lediglich das Ergebnis des select von der Tabelle aus der MSSQL-DB, die die Daten beinhaltet...

    Neu

    so, für alle, die es interessiert. Ich habe es mit SQL gelöst und die CTE eingesetzt...

    Quellcode

    1. with Stl as (
    2. select vp.ROWVORGANG, vp.ROWVORGANGPOS, vp.ROWVORGANGPOSSTL, ART_ROWART, vp.POSITION, vp.ARTIKEL,vp.ARTTEXT, cast(vp.MENGE as decimal) MENGE
    3. from
    4. VORGPOSSTL vp
    5. where vp.SATZART <> 'XX' and ROWVORGANG = 2983 and ROWVORGANGPOS = 3131
    6. union all
    7. select
    8. vps.ROWVORGANG, vps.ROWVORGANGPOS, vps.ROWVORGANGPOSSTL, vps.ART_ROWART, vps.POSITION, vps.ARTIKEL, vps.ARTTEXT, cast(vps.MENGE * Stl.MENGE as decimal) as MENGEGESAMT
    9. from VORGPOSSTL vps
    10. inner join
    11. Stl on
    12. Stl.ROWVORGANG = vps.ROWVORGANG and
    13. Stl.ROWVORGANGPOS = vps.ROWVORGANGPOS and
    14. Stl.ROWVORGANGPOSSTL = vps.ROWVERWEIS
    15. )
    16. select
    17. ROWVORGANG, ART_ROWART, ARTIKEL, ARTTEXT, SUM(MENGE) MENGE
    18. from
    19. (
    20. select
    21. ROWVORGANG, ROWVORGANGPOS, ROWVORGANGPOSSTL, ART_ROWART, POSITION, ARTIKEL, ARTTEXT, MAX(MENGE) MENGE
    22. from Stl
    23. group by ROWVORGANG, ROWVORGANGPOS, ROWVORGANGPOSSTL, ART_ROWART, POSITION, ARTIKEL, ARTTEXT
    24. )
    25. maxTmp
    26. group by ROWVORGANG, ART_ROWART, ARTIKEL, ARTTEXT
    27. order by ARTIKEL


    zur Erklärung:
    - zuerst wird über CTE die Verbindung zur übergeordnenten Ebene hergestellt
    - in zweiten select wird die Menge mit der Menge der übergeordnenten Baugruppe multipliziert

    jetzt wird es kompliziert
    bei mir kommt jetzt die Struktur aber mehrfach raus, aufgrund der joins. Macht aber nix
    - nun mach ich ein select auf ein select, welches nur die maximalen Mengen liefert, und gruppiere dabei nach den Spalten, so dass gleiche Artikel zusammengefasst und die Mengen summiert werden.