![]() |
Datenbank: Firebird • Version: 2.0 • Zugriff über: SQL
Division in Firebird SQL Abfrage
Hallo ich möchte eine Division aus zwei inline Selects durchführen, bekomme aber eine Fehlermeldung, addieren und multiplizieren funktioniert einwandfrei. Vielleicht kann mir jemand helfen?
SQL-Code:
select VV.Kontakt, AK.Name,
(select Count(VVI.Counter) From Vor_Vorgang VVI Where VVI.Vorgangsart = 30 and VVI.Kontakt = VV.Kontakt and VVI.DATUM >=:Z1 AND VVI.DATUM <=:Z2) as Angebot, (select Count(VVI.Counter) From Vor_Vorgang VVI Where VVI.Vorgangsart = 20 and VVI.Kontakt = VV.Kontakt and VVI.DATUM >=:Z1 AND VVI.DATUM <=:Z2) as Auftrag, (select Cast(Count(VVI.Counter)as Numeric(15,2)) From Vor_Vorgang VVI Where VVI.Vorgangsart = 30 and VVI.Kontakt = VV.Kontakt and VVI.DATUM >=:Z1 AND VVI.DATUM <=:Z2) / <<<< Hier die Division (select Cast(Count(VVI.Counter)as Numeric(15,2)) From Vor_Vorgang VVI Where VVI.Vorgangsart = 20 and VVI.Kontakt = VV.Kontakt and VVI.DATUM >=:Z1 AND VVI.DATUM <=:Z2) From Vor_Vorgang VV Left Join ADR_Kontakt AK on AK.Counter = VV.Kontakt Where VV.DATUM >=:Z1 AND VV.DATUM <=:Z2 Group By VV.Kontakt, AK.Name Order By AK.Name |
Re: Division in Firebird SQL Abfrage
Welcher Fehler wird gemeldet?
|
Re: Division in Firebird SQL Abfrage
|
Re: Division in Firebird SQL Abfrage
Kann das sein, dass da nur 2 Klammern fehlen?
|
Re: Division in Firebird SQL Abfrage
Versuch mal
SQL-Code:
...
Cast((select Cast(Count(VVI.Counter)as Numeric(15,2)) From Vor_Vorgang VVI Where VVI.Vorgangsart = 30 and VVI.Kontakt = VV.Kontakt and VVI.DATUM >=:Z1 AND VVI.DATUM <=:Z2) / <<<< Hier die Division (select Cast(Count(VVI.Counter)as Numeric(15,2)) From Vor_Vorgang VVI Where VVI.Vorgangsart = 20 and VVI.Kontakt = VV.Kontakt and VVI.DATUM >=:Z1 AND VVI.DATUM <=:Z2) as Numeric(15,2)) ... |
Re: Division in Firebird SQL Abfrage
eventuell ein explizieter CAST in DOUBLE PRECISION der einzelnen Felder?
|
Re: Division in Firebird SQL Abfrage
Zitat:
Divisionen zweier Inlineselects sind aber im Grunde möglich oder? |
Re: Division in Firebird SQL Abfrage
Sollte möglich sein. Versuch es mal wie hans vorgeschlagen hat, jedes Teilergebnis zu Casten
|
Re: Division in Firebird SQL Abfrage
SQL-Code:
Habe es jetzt mal so versucht, auch Fehlermeldung. Aber eigentlich dürfte ja auch nur ganze Zahlen herauskommen, ich counte ja.
(select Cast(Count(VVI.Counter)as DOUBLE PRECISION)
From Vor_Vorgang VVI Where VVI.Vorgangsart = 30 and VVI.Kontakt = VV.Kontakt and VVI.DATUM >=:Z1 AND VVI.DATUM <=:Z2) / (select Cast(Count(VVI.Counter)as DOUBLE PRECISION) From Vor_Vorgang VVI Where VVI.Vorgangsart = 20 and VVI.Kontakt = VV.Kontakt and VVI.DATUM >=:Z1 AND VVI.DATUM <=:Z2) |
Re: Division in Firebird SQL Abfrage
Hallo,
wenn nur ganze Zahlen rauskommen, warum dann der Cast auf das Count (um hier eventuell bei der Division Nachkommastellen zu bekommen)? Wie groß werden denn die Werte, die beim Count herauskommen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 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 by Thomas Breitkreuz