Gruppierung von Einträgen einer UNION-Abfrage

  • VB.NET
  • .NET (FX) 4.0

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Gruppierung von Einträgen einer UNION-Abfrage

    Hallo Ihrs :)

    Ich habe mir ein kleines VB.NET Projekt geschrieben, welches eine Access-Datenbank per SQL-Abfrage anspricht, ausliest und in eine Excel-Datei exportiert.

    Nur ist folgendes Problem aufgetreten:

    Die Excel-Tabelle, welche Daten aus 2 SQL-Abfragen beinhalten soll, gruppiert die Einträge nicht.

    Stand jetzt:
    IDBerechneter AusdruckArt
    123G
    115L
    280G
    299L
    315G
    355L


    Ziel:
    IDAusdruckGAusdruckL
    12315
    28099
    31555

    Leider komme ich da nicht mehr mit meinen Stümperhaften, ersten Access-Kenntnissen weiter :(

    Die momentane SQL-Abfrage ist:


    SELECT Projekte.Kurzname, Sum([Daten1].[Wert1]*[Daten1].[Preis1]) AS Ausdr1, Daten1.Art
    FROM Projekte RIGHT JOIN Daten1 ON Projekte.ProjekteIDText = Daten1.ProjektID
    WHERE (((Daten1.Datum) Between [Startdatum] And [Enddatum]))
    GROUP BY Projekte.Kurzname, Daten1.ProjektID, Daten1.Art
    HAVING (((Daten1.Art)="G"))
    ORDER BY Projekte.Kurzname;
    UNION ALL
    SELECT Projekte.Kurzname, Sum(Daten1.Wert1) AS SummevonWert1, Daten1.Art
    FROM Projekte INNER JOIN Daten1 ON Projekte.ProjekteIDText = Daten1.ProjektID
    WHERE (((Daten1.Datum) Between [Startdatum] And [Enddatum]))
    GROUP BY Projekte.Kurzname, Daten1.Art, Daten1.ProjektID
    HAVING (((Daten1.Art)="L"))
    ORDER BY Projekte.Kurzname;
    Die andere Abfrage ist genau gleich verknüpft.
    Die Verknüpfung ist nur dazu da, um die ProjektID in eine Kostenstelle 1:1 "umzurechnen".Alle Informationen sind auf der Tabelle Daten1.








    bin mich gerade über subqueries am informieren :)
    Danke für den Hinweis schonmal, Coldfire.

    Mein Problem sind nicht die Join - bzw Inner Join Befehle (zumindest nicht dieser Abfrage hust ...)
    Das Problem ist nur, die zwei Abfragen zu vereinigen. Dies ist in meinem 1. Post veranschaulicht.
    Die Abfrage funktioniert momentan, jedoch nur mit abwechselnden Zeilen. Ich will in einer Zeile die G und L - Einträge in Spalte 2 und 3 stehen haben.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Gunngir“ ()

    Und es ist immer noch eine Pivot-Tabelle. Das würde ich nicht von Hand mit SQL machen.
    Falls es direkt in Access geschehen soll:
    Abfrage-Assistent öffnen, Kreuztabellenabfrage-Assistent öffnen, Tabelle wählen.
    Die "ID" nach links, die "Art" nach oben und mit den Werten den Innenbereich füllen.
    Das Häkchen bei "jede Zeile summieren?" rausnehmen.
    Es kommt genau das raus, was du unter "Ziel" aufgeführt hast.
    Exportieren kann man das Pivot-Dingens dann auch noch.
    An manchen Tagen gibt es zu allem Überfluss auch noch Ärger!
    Leider bin ich momentan noch zu doof um die Kreuztabellen richtig anzuwenden :)
    Ich lasse das Makro jetzt eben doppelt durchlaufen - für die L und die G - Listen.

    Am Wochenende wird das wohl dann mit Kreuztabellen nachgeholt :)

    Danke für die Antworten.

    ps: wenn mir jemand sagen könnte, wie ich das Thema auf "erledigt" setze, dann könnte das auch eingetragen werden :)