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

Firebird: Union all

Dieses Thema im Forum "Firebird und Interbase" wurde erstellt von ny_unity, 10 März 2014.

  1. ny_unity

    ny_unity Datenbank-Guru

    Hallo Leute,

    habe ein Problem mit Union all im Firebird-SQL.

    Folgender Aufbau des ersten select:
    Code:
    Select * from (select S1, count(S2) as S2 from (Select S3,S4 from t1 where S3=1) t2) group by t2.S1
    Folgender Aufbau des zweiten Selects:
    Code:
    Select 'Summe:' from rdb$database
    Union all:
    Code:
    Select * from (select S1, count(S2) as S2 from (Select S3,S4 from t1 where S3=1) t2) group by t2.S1
    UNION ALL
    Select 'Summe:' from rdb$database
    Folgende Fehlermeldung:
    Code:
    Wenn ich zum Test folgendes mache:
    Select Personal.Personalnr from Personal where Personal.Personalnr = 1
    UNION ALL
    Select 'Summe' from rdb$database
    Funktioniert alles... Habt Ihr eine Idee was ich falsch mache? Danke und Gruß

    Erik
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Die Fehlermeldung ist doch eindeutig, oder?

    Dein "Select * from (select S1, count(S2) " liefert 2 Spalten, das "Select 'Summe:' from" nur eine. Peng!
     
  3. ny_unity

    ny_unity Datenbank-Guru

    oh mein gott... man sollte erstmal das statement zu end emachen und dann testen, ich bin schritt für schritt durchgegangen, aber es klappt, danke für die Hilfe!
     
  4. ny_unity

    ny_unity Datenbank-Guru

    Habe zum aktuellen Sachverhalt noch ein Problem, und zwar mit OVER()
    Im MSSQL habe ich folgendes:
    Code:
    cast(cast(( 10000 * cast(t5.ANZAHLANWESEN as Numeric(7,3)) / sum(t5.ANZAHLANWESEN)  OVER () ) AS NUMERIC(7,3)) / 100 AS NUMERIC(5,2)) AS ANTEILANWESEN
    Aber so funktioniert das nicht im Firebird, obwohl OVER() ja ein bekannter Befehl ist....
    habe schon gegoogelt, aber das Over ist nicht ordentlich im Firebird erklärt :(
    Ich möchte halt unter ANTEILANWESEN die jeweiligen Prozente am gesamten ausrechnen, klappt nicht -.-"

    Danke

    Erik
     
  5. akretschmer

    akretschmer Datenbank-Guru

  6. ny_unity

    ny_unity Datenbank-Guru

    Danke für den Link.. Doch warum funktioniert over () dann nicht?
     
  7. akretschmer

    akretschmer Datenbank-Guru

    Mangels Wissen um Firebird und Verheimlichung der Fehlemeldung durch Dich kann ich es Dir nicht sagen.
     
  8. ny_unity

    ny_unity Datenbank-Guru

    Fehlermeldung lautet:
    Sorry, hatte ich vergessen.
     
  9. ny_unity

    ny_unity Datenbank-Guru

    hmm, hab das over gelöst bzw. umgangen, in dem ich noch eine unterabfrage gebaut habe, die mir die Summe aller Datensätze anzeigt, jetzt klappts... trotzdem danke für die Hilfe!
     
  10. gurbelunder

    gurbelunder Datenbank-Guru

    Mal allgemeine Vermutung: Vielleicht wird OVER() von Firebird nicht unterstützt? Oder nicht unterstützt, wie du es dir vorstellst? Was auch erklären würde, warum das schlecht bis gar nicht dokumentiert ist...
     
  11. ny_unity

    ny_unity Datenbank-Guru

    Aber im Dokument was akretschmer geschickt hat, stehts drin...
     
  12. gurbelunder

    gurbelunder Datenbank-Guru

    Heißt ja aber noch nicht, dass es 100%ig unterstützt wird. Ich müsste auch schwindeln, ob es überhaupt im SQL Standard drin steht und definiert ist......
     
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