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

SQlite3 Union oder gehts einfacher?

Dieses Thema im Forum "SQLite" wurde erstellt von fohnbit, 13 Juli 2015.

  1. fohnbit

    fohnbit Benutzer

    Hallo!

    Meine Tabelle hat den Aufbau:
    timestamp;uid;value;value_min;value_max

    Ich benötige nun dieses Ergebnis:
    timestamp;uid(1);value(1);value_min(1);value_max(1);uid(2);value(2);value_min(2);value_max(2);uid(3);...

    Falls bei einem Timestamp ein Abfrage keinen Wert liefert, soll diese "null" sein.

    Mit Union gehts wohl einfach, aber kann man das auch irgendwie rekursiv ausführen lassen?

    Beispiel:
    uid: a,b,c,d

    Danke!
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Es gibt ein Unterforum zu SQLlite.

    Zu Deiner Frage: offenbar willst Du Zeilen zu Spalten machen und kennst das noch nicht: https://www.pg-forum.de/viewtopic.php?f=66&t=4067

    Das hat weder was mit UNION noch mit Rekursiv zu tun, aber viel damit, daß Datenbanken keine Tabellenkalkulationen sind und daher solch Wünsche fast immer unsinnig sind.
     
  3. fohnbit

    fohnbit Benutzer

    Hallo!

    Ja, so ähnlich. Leider gibt mir das Beispiel vom oberen Link einen Fehler aus bei:
    select
    town,
    sum(case when extract(month from date) = 7 then amount else 0 end) as "July",
    sum(case when extract(month from date) = 8 then amount else 0 end) as "August"
    from rain
    group by town
    order by town;

    Die Tabelle habe ich erstellt. Wird das von Sqlite nicht unterstützt?
     
  4. Distrilec

    Distrilec Datenbank-Guru

  5. fohnbit

    fohnbit Benutzer

    Hallo!

    Ups sorry :)
    Fehler ist:
    near "from": syntax error:
     
  6. fohnbit

    fohnbit Benutzer

    OK, das Extract Schlüsselwort kennt er nicht.

    Ich habs mal so gelöst?:
    Tabelle Hour:
    timestamp, uid,value


    select
    timestamp,
    sum(case when uid = "24jd8d3hd" then value else 0 end) as "24jd8d3hd",
    sum(case when uid = "347hd73e" then value else 0 end) as "347hd73e"
    from hour

    group by timestamp
    order by timestamp;

    Scheint mir das richtig auszugeben.

    Ich benötige aber keine sum Funktion, jedoch ist der Timestamp pro uid eindeutig .. daher kann ich diese nutzen, oder?
     
  7. akretschmer

    akretschmer Datenbank-Guru

    Das sum() dient zum aggregieren, da Du als 'Zwischentabelle' eine mit vielen Zeilen bekommst, wo jeweils viele Spalten leer sind. (bzw. bei mir 0)

    Aber probier mal ruhig ;-)
     
Die Seite wird geladen...
Ähnliche Themen - SQlite3 Union oder
  1. nieselfriem
    Antworten:
    1
    Aufrufe:
    4.192
  2. niederrheiner
    Antworten:
    7
    Aufrufe:
    4.938
  3. raegtime
    Antworten:
    2
    Aufrufe:
    6.116
  4. Tom Weber
    Antworten:
    3
    Aufrufe:
    313
  5. rolandg1881
    Antworten:
    13
    Aufrufe:
    1.028

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