1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Tabelle spaltenweise zusammenfassen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Elmey, 22 Dezember 2011.

  1. Elmey

    Elmey Neuer Benutzer

    Hi,

    da ich nur über ein wenig Grundlagenwissen in SQL verfüge, muss ich leider mal eine sicher leicht zu beantwortende Frage stellen (zumidnest für jemanden, der in SQL-Statements geübter ist als ich):

    Ich habe eine Tabelle mit den Spalten "Index", "Subindex" und "Zähler". Zu jedem Index gehören bis zu zwei Subindices, die ich jetzt gerne zusammenfassen möchte, d.h. die Zählerstände für Subindex 1 und 2 addieren und in 1 ablegen.

    Oder um es an einem Beispeil zu verdeutlichen:

    Code:
    Index Subindex Zähler
    1001  1        12
    1001  2        9
    1002  1        17
    1003  1        5
    1003  2        7
    soll zusammengefasst werden zu

    Code:
    Index Subindex Zähler
    1001  1        21
    1002  1        17
    1003  1        12
    
    Das Löschen der dann überflüssigen Datensätze mit Subindex=2 ist kein Problem - aber wie addiere ich die Zählerstände von 1 und 2 in 1 hinein?
     
  2. Charly

    Charly Datenbank-Guru

    Hallo Elmey,

    es gibt auch elegantere Wege aber das hier geht auch:

    Code:
    create table t1 (idx int, Subindex int, Zähler int)
     
    insert t1 values (1001,1,12)
    insert t1 values (1001,2,9)
    insert t1 values (1002,1,17)
    insert t1 values (1003,1,5)
    insert t1 values (1003,2,7)
     
    select * from t1
     
    create table t2 (idx int, Subindex int, Zähler int)
     
    insert into t2
    select idx, 1 as Subindex, sum(zähler) as Zähler from t1
    group by idx
     
    -- Alle Daten in t1 löschen (erst prüfen ob in t2 die richtigen Daten stehen)
    delete from t1
     
    -- Die Daten aus t2 in t1 einfügen
    insert into t1
    select * from t2
     
    -- Anzeigen was in t1 steht
    select * from t1
     
    -- und t2 löschen wenn alles OK ist
    drop table t2
    
    Nicht sonderlich einfallsreich aber funktional.

    Gruß Charly

    PS: mit ms-sql server geschrieben. Sollte aber auch unter mysql laufen
     

Diese Seite empfehlen