![]() |
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:
Alles klappt bis auf Sum(IF ...
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 |
Re: SQL Umsetzung für Firebird
Firebird unterstützt die SQL-Standard Funktion IIF()
|
Re: SQL Umsetzung für Firebird
Danke für die schnelle Antwort.
Jetzt kommt das:
SQL-Code:
Token unknown line ..., char ...
Sum(IIF( RDATEN.MWST = 7, (Rdaten.Anz * Rdaten.Preis * (Rdaten.MwSt /100)) , 0 )) AS SumMwSt7
=. geht das überhaupt oder sollte ich besser
SQL-Code:
oder so schreibenCASE 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 |
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 |
Re: SQL Umsetzung für Firebird
Ja mit Raten habe ich mich verschieben aber bei Firebird heist meine Tabelle RDaten
|
Re: SQL Umsetzung für Firebird
Zeig mal das komplette Statement
|
Re: SQL Umsetzung für Firebird
SQL-Code:
Er mault bei Sum( IIF(RDATEN.MWST = 7, RDATEN.ANZ * RDATEN.PREIS * (RDATEN.MWST/100), 0)) AS SumMwSt7,
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; |
Re: SQL Umsetzung für Firebird
Zitat:
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; |
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.
|
Re: SQL Umsetzung für Firebird
Datum ist ja ein String :shock: Warum?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz