Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Division in Firebird SQL Abfrage (https://www.delphipraxis.net/124302-division-firebird-sql-abfrage.html)

OS299 18. Nov 2008 10:25

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

mkinzler 18. Nov 2008 10:26

Re: Division in Firebird SQL Abfrage
 
Welcher Fehler wird gemeldet?

OS299 18. Nov 2008 10:28

Re: Division in Firebird SQL Abfrage
 
http://img3.imagebanana.com/img/6f8e...ov.1811.27.jpg

DeddyH 18. Nov 2008 10:30

Re: Division in Firebird SQL Abfrage
 
Kann das sein, dass da nur 2 Klammern fehlen?

mkinzler 18. Nov 2008 10:30

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))
...

Gruber_Hans_12345 18. Nov 2008 10:31

Re: Division in Firebird SQL Abfrage
 
eventuell ein explizieter CAST in DOUBLE PRECISION der einzelnen Felder?

OS299 18. Nov 2008 10:37

Re: Division in Firebird SQL Abfrage
 
Zitat:

Zitat von mkinzler
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))
...

Ne gleiche Fehlermeldung ! Hatte diese Methode auch schonmal getestet.
Divisionen zweier Inlineselects sind aber im Grunde möglich oder?

mkinzler 18. Nov 2008 10:38

Re: Division in Firebird SQL Abfrage
 
Sollte möglich sein. Versuch es mal wie hans vorgeschlagen hat, jedes Teilergebnis zu Casten

OS299 18. Nov 2008 10:41

Re: Division in Firebird SQL Abfrage
 
SQL-Code:
       (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)
Habe es jetzt mal so versucht, auch Fehlermeldung. Aber eigentlich dürfte ja auch nur ganze Zahlen herauskommen, ich counte ja.

nahpets 18. Nov 2008 10:50

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 16:43 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