Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Datensätze aus zwei Tabellen gruppieren/zählen

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Fibu RHG, 20 Mai 2020.

  1. Fibu RHG

    Fibu RHG Neuer Benutzer

    Ich habe folgendes Problem. Ich möchte aus zwei unterschiedlichen Tabellen Datensätze gruppiert zählen lassen. Dazu habe ich einzeln folgende SQL geschrieben:

    select
    Verkaeufer,
    count (verkaeufer)
    from cash_journal
    where text = 'Bon'
    and datum between '01.01.2020' and '30.04.2020'
    group by rollup (Verkaeufer)
    ;
    select
    fakt_tech,
    count (fakt_tech)
    from fa
    where (fakt_art = 'KLS' or fakt_art = 'KBV')
    and
    fakt_tgdat between '01.01.2020' and '30.04.2020'
    group by rollup (fakt_tech)
    ;

    Dabei sind die Felder "Verkaeufer" und "Fakt_tech" jeweils mit gleichen Inhalten gefüllt. Ich möchte nun gleich in einer Spalte ausgegeben haben, wie oft Verkaeufer 1 in cash_journal UND als fakt_tech in fa vorkommt. Die Lösung ist bestimmt ganz einfach, aber ich komme einfach nicht weiter. Vielen Dank!
     
  2. akretschmer

    akretschmer Datenbank-Guru

    UNION ist Dein Freund.
     
  3. Fibu RHG

    Fibu RHG Neuer Benutzer

    UNION hat meine Freundschaftsanfrage bestätigt ;-) … allerdings hätte ich noch gern, dass die Anzahl der Verkäufer mit der Anzahl der fakt_tech summiert wird.
    Also meine Ausgabe ist momentan so:

    ALTEKA 14
    ALTEKA 760
    BERALE 20
    BERALE 30

    Ich hätte aber gern:

    ALTEKA 774
    BERALE 50

    Das geht doch sicher auch noch?
     
  4. akretschmer

    akretschmer Datenbank-Guru

    sicher. Macher ERST das Union und DANN die Gruppierung. In etwa:

    select ... from (select ... from ... UNION select ... from ...) bla group by ...
     
    Walter gefällt das.
  5. Fibu RHG

    Fibu RHG Neuer Benutzer

    Habe es jetzt so versucht - leider nicht mit dem gewünschten Ergebnis. Bekomme jetzt die "neue" Anzahl, also entweder 1 oder 2

    select
    verkaeufer,
    count (verkaeufer)
    from (select
    Verkaeufer,
    count (verkaeufer)
    from cash_journal
    where text = 'Bon'
    and datum between '01.01.2020' and '30.04.2020'
    group by rollup (Verkaeufer)
    union
    select
    fakt_tech,
    count (fakt_tech)
    from fa
    where (fakt_art = 'KLS' or fakt_art = 'KBV')
    and
    fakt_tgdat between '01.01.2020' and '30.04.2020'
    group by rollup (fakt_tech))
    group by (verkaeufer);
     
  6. akretschmer

    akretschmer Datenbank-Guru

    nein, laß im Subselect das groub by rollup weg. Dort holst Du nur die Rohdaten aus den Tabellen, die Aggregation dann außen.
     
  7. Fibu RHG

    Fibu RHG Neuer Benutzer

    select
    verkaeufer,
    count(verkaeufer)
    from
    (select
    verkaeufer,
    datum
    from cash_journal
    where text = 'Bon'
    and datum > '01.01.2020'
    union all
    select
    fakt_tech,
    fakt_tgdat
    from fa
    where (fakt_art = 'KLS' or fakt_Art = 'KBV')
    and fakt_tgdat > '01.01.2020' )
    group by verkaeufer
    order by verkaeufer;

    DANKE! Jetzt läuft es und die Werte passen auch
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden