Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL und berechnete Felder (https://www.delphipraxis.net/35618-sql-und-berechnete-felder.html)

Klaus D. 9. Dez 2004 19:44


SQL und berechnete Felder
 
Moin
folgender SQL String:
Code:
SELECT RE.ZEIT
      ,RE.ID
      ,LO.LOHN

FROM        tbl_REchnung RE

INNER JOIN  tbl_Lohn LO
ON         (RE.SID_LOHN = LO.ID)

WHERE      (RE.SID_Rechnung_NR =:ID)
ich möchte jetzt nur noch 2 berechnete Felder mit ausgeben.
einmal SUM(Zeit * Lohn)
und dann die Gesamtsumme der Ergebnisse von Lohn und Zeit

soll ne Rechnung werden.
Danke im voraus

jensw_2000 9. Dez 2004 20:03

Re: SQL und berechnete Felder
 
Das Produkt aus Lohn * Zeit bekommst du so raus ...

SQL-Code:
  Select Stundenlohn * Arbeitszeit AS Lohnkosten
  FROM Tabelle
Die Gesamtsumme SUM(Lohnkosten) kannst du nur über eine Hilfsabfrage und einen SELECT UNION machen
lies dazu mal bitte folgenden Thread

Hier im Forum suchenbasteln einer sql abfrage

Klaus D. 10. Dez 2004 19:08

Re: SQL und berechnete Felder
 
Danke
ist es auch möglich den Datentyp vom so erzeugten Feld 'Lohnkosten' im SQL-String festzulegen(Currency).
Danke

jensw_2000 10. Dez 2004 19:13

Re: SQL und berechnete Felder
 
Ja, schau dir mal SQL Funktionen Convert und CAST an.

Klaus D. 10. Dez 2004 20:03

Re: SQL und berechnete Felder
 
sehr wenig finde ich in meiner Literatur.
zu convert ein wenig zu CAST = null.
ich suche weiter, hast mich ja in die richtige Richtung gelenkt.
Danke...Klaus :zwinker:

jensw_2000 10. Dez 2004 21:50

Re: SQL und berechnete Felder
 
Sorry,

habe grade ein bisschen viel um die Ohren ...

Wenns rein zur Anzeige dienen soll kannst du das einfach so machen
SQL-Code:
SELECT Mitarbeiter,
       'EUR '+str(Nettopreis,9,2) AS 'NettoPreis',
       'EUR '+str(Nettopreis * 1.16 ,9,2) AS 'BruttoPreis'
FROM Tabelle
Wenn die Felder "echte currency" Felder sein müssen dann schau mal im MSDN nach CAST, CONVERT

jensw_2000 11. Dez 2004 00:43

Re: SQL und berechnete Felder
 
Ich denke du hast diesen Link schon gefunden...

http://msdn.microsoft.com/library/de...ca-co_2f3o.asp

Hier aber trotzdem noch 2 kurze Beispiele ...

Ausgabe als Text mit Währungskennzeichen
SQL-Code:
 str(Convert(smallmoney,Touren_View_RE.anf_NettoPreis,0),10,2) AS NettoPreis +'EUR '

Ausgabe als Currency ohne Währungskennzeichen
SQL-Code:
 Convert(smallmoney,Touren_View_RE.anf_NettoPreis,0) AS NettoPreis

:hi:

Klaus D. 12. Dez 2004 17:10

Re: SQL und berechnete Felder
 
Moin
Code:
ELECT RE.ZEIT
      ,RE.ID
      ,LO.LOHN
      ,RE.Zeit * LO.LOHN AS Kosten
     
FROM        tbl_REchnung RE
INNER JOIN  tbl_Lohn LO
ON         (RE.SID_LOHN = LO.ID)
WHERE      (RE.SID_Rechnung_NR =:ID)
ich möchte alle zurückgegebenen Kosten addieren.
Code:
,SUM((RE.Zeit * LO.LOHN) AS Kosten)
geht nicht.
ich brauche eigentlich nur ein einziges Ergebnis..die Gesamtsumme von 'Kosten'welches ich
dann in ein Currency-Format convertieren möchte.
MfG...Klaus

jensw_2000 12. Dez 2004 20:51

Re: SQL und berechnete Felder
 
SQL-Code:
SELECT SUM(RE.ZEIT) * SUM(LO.LOHN) AS Kosten

FROM       tbl_REchnung RE

INNER JOIN tbl_Lohn LO

ON         RE.SID_LOHN = LO.ID

WHERE      RE.SID_Rechnung_NR =:ID
So hast du nur eine einzige Spalte "Kosten" mit einem Record der das Ergebnis SUMME aller Zeitem * SUMME aller
Lohnkosten enthält.
Den Wert kannst du dann via Convert in das gewünschte Format bringen ...

:hi:

Hasse 13. Dez 2004 06:51

Re: SQL und berechnete Felder
 
Moin, Moin
Code:
SELECT SUM(RE.ZEIT * LO.LOHN) AS Kosten

FROM       tbl_REchnung RE

INNER JOIN tbl_Lohn LO

ON         RE.SID_LOHN = LO.ID

WHERE      RE.SID_Rechnung_NR =:ID

Besser So, dann rechnet die Abfrage die Kosten auch mit unterschielichen Stundensätzen richtig. :wink:

Hasse


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:37 Uhr.

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