Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Umsetzung für Firebird (https://www.delphipraxis.net/138397-sql-umsetzung-fuer-firebird.html)

clock50 9. Aug 2009 20:13

Datenbank: Firebird • Version: 1.5 • Zugriff über: IB

SQL Umsetzung für Firebird
 
Hallo Leute,

ich bin gerade dabei eine DB von mySQL auf Firebird umzubauen.

Bei mySQL hat folgendes geplappt aber bei Firebird kennt es kein 'if' in der Abfrage

SQL-Code:
SELECT rechnung.RechNr AS RechNr, rechnung.Datum AS Datum, rechnung.ReBetrag AS ReBetrag,
Sum(IF ( daten.MwSt =7, daten.Anzahl * daten.ArtPreis * ( daten.MwSt /100  ) , 0  ) ) AS SumMwSt7,
Sum(IF ( daten.MwSt =19, daten.Anzahl * daten.ArtPreis * ( daten.MwSt /100  ) , 0  ) ) AS SumMwSt19
FROM rechnung JOIN daten ON daten.ReNr = rechnung.RechNr WHERE EXTRACT(MONTH FROM rechnung.Datum ) =
8 AND EXTRACT( YEAR FROM rechnung.Datum ) = 2009 GROUP BY rechnung.datum, rechnung.RechNr
Alles klappt bis auf Sum(IF ...

mkinzler 9. Aug 2009 20:31

Re: SQL Umsetzung für Firebird
 
Firebird unterstützt die SQL-Standard Funktion IIF()

clock50 10. Aug 2009 10:33

Re: SQL Umsetzung für Firebird
 
Danke für die schnelle Antwort.

Jetzt kommt das:
SQL-Code:
Sum(IIF( RDATEN.MWST = 7, (Rdaten.Anz * Rdaten.Preis * (Rdaten.MwSt /100)) , 0 )) AS SumMwSt7
Token unknown line ..., char ...
=.

geht das überhaupt oder sollte ich besser
SQL-Code:

CASE
    WHEN RATEN.MWST = 7 THEN Sum(Rdaten.Anz * Rdaten.Preis * (Rdaten.MwSt /100)) as SumMwSt7
    WHEN RATEN.MWST = 19 THEN Sum(Rdaten.Anz * Rdaten.Preis * (Rdaten.MwSt /100)) as SumMwSt19
END
oder so schreiben

mkinzler 10. Aug 2009 11:41

Re: SQL Umsetzung für Firebird
 
Man kann auch CASE..WHEN nehmen, aber der Fehler muss wo anders liegen.
Du verwendest zum Beispiel eine andere Tabelle als im unteren Beispiel

clock50 10. Aug 2009 21:45

Re: SQL Umsetzung für Firebird
 
Ja mit Raten habe ich mich verschieben aber bei Firebird heist meine Tabelle RDaten

mkinzler 11. Aug 2009 05:38

Re: SQL Umsetzung für Firebird
 
Zeig mal das komplette Statement

clock50 11. Aug 2009 09:50

Re: SQL Umsetzung für Firebird
 
SQL-Code:
SELECT RECHNUNG.RNR AS RNR, RECHNUNG.DATUM AS DATUM, Sum(RDATEN.ANZ * RDATEN.PREIS) AS NSUMME,
Sum(RDATEN.ANZ * RDATEN.PREIS * (RDATEN.MWST/100)) AS BSUMME,
Sum( IIF(RDATEN.MWST = 7, RDATEN.ANZ * RDATEN.PREIS * (RDATEN.MWST/100), 0)) AS SumMwSt7,
Sum( IIF(RDATEN.MWST = 19, RDATEN.ANZ * RDATEN.PREIS * (RDATEN.MWST/100), 0)) AS SumMwSt19
FROM RECHNUNG
JOIN RDATEN ON RDATEN.RNR = RECHNUNG.RNR
WHERE EXTRACT( 
MONTH FROM RECHNUNG.DATUM ) = 1 AND EXTRACT( YEAR
FROM RECHNUNG.DATUM ) =2009
GROUP BY RECHNUNG.DATUM, RECHNUNG.RNR;
Er mault bei Sum( IIF(RDATEN.MWST = 7, RDATEN.ANZ * RDATEN.PREIS * (RDATEN.MWST/100), 0)) AS SumMwSt7,

mkinzler 11. Aug 2009 10:01

Re: SQL Umsetzung für Firebird
 
Zitat:

Er mault bei Sum( IIF(RDATEN.MWST = 7, RDATEN.ANZ * RDATEN.PREIS * (RDATEN.MWST/100), 0)) AS SumMwSt7,
Versuch es mal mit Tabellen-Aliasen, dann ist es etwas übersichtlicher. Zudem haben ein paar Klammern gefehlt
SQL-Code:
SELECT
    r.RNR AS RNR, r.DATUM AS DATUM,
    Sum( rd.ANZ * rd.PREIS) AS NSUMME,
    Sum( rd.ANZ * rd.PREIS * (rd.MWST/100)) AS BSUMME,
    Sum( IIF( rd.MWST = 7, rd.ANZ * rd.PREIS * ( rd.MWST/100), 0))) AS SumMwSt7,
    Sum( IIF( rd.MWST = 19, rd.ANZ * rd.PREIS * ( rd.MWST/100), 0))) AS SumMwSt19
FROM
    RECHNUNG r
        JOIN RDATEN ON RDATEN.RNR rd, = RECHNUNG.RNR
WHERE
    EXTRACT( MONTH FROM r.DATUM ) = 1 AND
    EXTRACT( YEAR FROM r.DATUM ) = 2009
GROUP BY
    r.DATUM, r.RNR;

clock50 11. Aug 2009 10:38

Re: SQL Umsetzung für Firebird
 
Liste der Anhänge anzeigen (Anzahl: 1)
Es hängt an der selben Stelle, ich habe nochmal das Script für die DB angehängt der Fehler könnte auch da liegen.

mkinzler 11. Aug 2009 10:43

Re: SQL Umsetzung für Firebird
 
Datum ist ja ein String :shock: Warum?


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:32 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz