Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Brauche SQL-Profi wegen einer Abfrage... (https://www.delphipraxis.net/28561-brauche-sql-profi-wegen-einer-abfrage.html)

Killerloop 26. Aug 2004 13:35


Brauche SQL-Profi wegen einer Abfrage...
 
Hallo !

Ich habe folges problem

Die Tabelle

lftndr : Name : provision : netto : monat
---------------------------------------------
1. : hans : 50 : 100 : 01
2. : tom : 20 : 200 : 01
3. : klaus : 10 : 20 : 01
4. : hans : 150 : 30 : 01
5. : hans : 20 : 10 : 01
6. : klaus : 50 : 140 : 02
7. : tom : 55 : 10 : 02
8. : hans : 25 : 10 : 02
9. : tom : 10 : 100 : 02

etwas verschoben hier, aber ich hoffe man erkennt was gemeint ist.

ich will eine SQL-Abfrage machen in der die einzelnen namen aufgelistet werden und mir zusammengerechnet wird wieviel provision
klaus,hans und tom im monat 01 hatten. dabei soll jeder der namen nur ein mal auf der liste auftauschen, (hätte ich jetzt mit select distinct gemacht) aber ich brauche trotzdem die gesamtprovision von z.B. tom im hans 02.

Die endtabelle müsste dan für monat 01 so aussehen:


Name : provision : netto : Gesamt

Hans 220 : 140 : 360
Klaus 10 : 20 : 30
Tom 20 : 200 : 220

Mein problem ist jetzt der hans. er hat im monat 01 3 mal provision kassiert, darf aber in der endabrechnung nur 1 mal auftauchen und alle 3 datensätze von ihm werden aber addiert.

Ich hoffe mir kann jemand helfen, ich komm da net weiter.

Leuselator 26. Aug 2004 13:40

Re: Brauche SQL-Profi wegen einer Abfrage...
 
Code:
  [b]SELECT[/b] name
       , [b]sum[/b](provision) AS ProviSumme
       , [b]sum[/b](netto)    AS NettoSumme
       , [b]count[/b](name)   AS AnzahlZahlungen
       , monat
    [b]FROM[/b] lftndr
[b]GROUP BY[/b] name,monat
Gruß

Union 26. Aug 2004 13:44

Re: Brauche SQL-Profi wegen einer Abfrage...
 
Es müsste so aussehen wenn Du nur einen Monat haben möchtest:

SQL-Code:
select Name,
   sum(provision) as Provision,
   sum(netto) as Netto,
   sum(provision+Netto) as Gesamt
from provision
group by monat,name having monat = 1

Killerloop 26. Aug 2004 14:06

Re: Brauche SQL-Profi wegen einer Abfrage...
 
Oh... Ah... es lebt. es bewegt sich. jetzt muss nur noch ein join mit rein weil das ja alles nur ein vereinfachtes bespiel war.

Die Realität ist viel härter. :? Das ganze Geschoss geht über 3 Tabellen.

Aber das Prinzip ist klar.

Danke euch erstmal.

Killerloop 26. Aug 2004 15:03

Re: Brauche SQL-Profi wegen einer Abfrage...
 
nein, doch nicht so klar. Ich brauch noch etwas hilfe.

die tabelle ändert sich etwas. und zwar um 1 feld. Das Feld "ART".

dork kann entweder KASKO oder SCHUTZBRIEF drinstehen.

lftndr:Name:provision:monat:art
---------------------------------------------
1. : hans : 50 : 01 :kasko
2. : tom : 20 : 01 :kasko
3. : klaus : 10 : 01 :Schutzbrief
4. : hans : 150 : 01 :kasko
5. : hans : 20 : 01 :schutzbrief
6. : klaus : 50 : 02:kasko
7. : tom : 55 : 02 :schutzbrief
8. : hans : 25 : 02 :kasko
9. : tom : 10 : 02 :schutzbrief

ok ,jetzt soll als ergebniss wie bereits oben angesprochen jeder name nur EINMAL in der endliste auftauchen,

die endliste sollte dieses format haben

lfdnr: name : provision KASKO : Provision SCHUTZBRIEF : Gesamt
1 hans : 225 : 20 : 245
2 tom : 20 : 65 : 85
3 klaus: 50 : 10 : 60

wobei ich festlegen möchte für welchen monat das ganze gelten soll. hier wäre es jetzt für monat 01 & 02.

ziemlich verzwickte sache. Ich hab schon in büchern und tutorials gekämpft, aber das ist mir fast zu knifflig. kann mir jemand helfen bei dieser geschichte ?

Jelly 26. Aug 2004 15:14

Re: Brauche SQL-Profi wegen einer Abfrage...
 
Hallo,

was du da vor hast geht nicht in einem Ruck. Du kannst in SQL keine Zeileninformationen in Spalten wiedergeben. Je nach DBS kannst du aber noch eventuell Stored Procedures in Erwägung ziehen.

Gruß,

angos 26. Aug 2004 15:28

Re: Brauche SQL-Profi wegen einer Abfrage...
 
Wieso nicht: Müsste doch mit

select Name,
sum(if(Art='KASKO', Provision, 0)) as KaskoProv,
sum(if(Art='SCHUTZBRIEF', Provision, 0)) as SchutzProv
from provision
where (monat >= :MonatVon)
and (Monat <= :MonatBis)
group by monat,name

funktionieren (ungetestet, aber ähnliches Problem hab ich so schonmal gelöst)

Jelly 26. Aug 2004 16:11

Re: Brauche SQL-Profi wegen einer Abfrage...
 
Zitat:

Zitat von angos
Wieso nicht:

Stimmt, so könnts klappen, falls denn der if-Konstrukt von der Datenbank unterstützt wird.

Killerloop 26. Aug 2004 16:58

Re: Brauche SQL-Profi wegen einer Abfrage...
 
nein, if geht nicht. ok, eigentlich muss es nicht unbedingt alles in einer query sein, aber ich muss einen quickreport machen der halt am ende so aussieht wie beschrieben und da wäre alles in einer einzigen query natürlich das günstigste.

Ist e smöglich aus mehreren querys einen quickreport zusammenzuflicken ? oder ist davon abzuraten ?
danke euch trotzdem für eure tips.

Leuselator 26. Aug 2004 18:20

Re: Brauche SQL-Profi wegen einer Abfrage...
 
Damit wären wir (wiedermal) bei der Frage nach der verwendeten Datenbank angelangt: Welche Datenbank verwendest Du?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:11 Uhr.
Seite 1 von 3  1 23      

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