Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Wie Umsatz pro ID und MasterID ermitten? (https://www.delphipraxis.net/88794-wie-umsatz-pro-id-und-masterid-ermitten.html)

BlueStarHH 21. Mär 2007 09:08

Datenbank: Paradox/Firebird • Zugriff über: TQuery, TIBQuery

Wie Umsatz pro ID und MasterID ermitten?
 
Hallo,

ich habe eine Tabelle wie unten dargestellt mit 3 Spalten ID, MasterID und Umsatz. Ich möchte nun die Summe des Umsatzes für jede ID haben. Wo jedoch eine MasterID vergeben ist, soll die MasterID verwendet werden, und nicht die ID in der Spalte ID. Wo die Master ID also vergeben ist, ist die Spalte ID irrelevant.

SQL-Code:
ID MasterID Umsatz
1   null    10,20
1   null    10,30
2   null     5,70
2   null     1,30
5    3        1,40
6    3        2,40
7    4        7,99
8    2        5,00
Das soll das Ergebnis sein. Die Werte in den Klammern dienen nur zum Verständnis. Die sollen natürlich nicht in der Tabelle sein:

SQL-Code:
ID Umsatz
1  20,50 (= 10,20 + 10,30)
2  12,00 (= 5,70 + 1,30 + 5,00)
3   3,80 (= 1,40 + 2,40)
4   7,99 (= 7,99)

Wie sieht der SQL-Ausdruck dazu aus? Ist dazu überhaupt ein SQL-Ausdruck möglich?

Wenn man die Spalte MasterID nicht hätte, würde man das ja so machen:
SQL-Code:
select ID, sum(Umsatz) from Tabelle
group by ID
Wie die MasterID da nun aber untergebracht werden muss, weiß ich leider nicht. Danke!

Momentan wird Paradox verwendet. In einigen Woche soll aber auf Firebird umgestellt werden. Daher kann die Lösung für Paradox oder Firebird sein.

mkinzler 21. Mär 2007 09:14

Re: Wie Umsatz pro ID und MasterID ermitten?
 
Für FB ist das kein Problem, wenn man CASE oder IIF verwendet.

dataspider 21. Mär 2007 09:58

Re: Wie Umsatz pro ID und MasterID ermitten?
 
Hi,

das sieht dann so aus:

SQL-Code:
select
 case
   when master_id is null then
     id
   else
     master_id
 end as ID
 , sum(umsatz) from tabelle
group by
 case
   when master_id is null then
     id
   else
     master_id
 end
Cu, Frank

BlueStarHH 21. Mär 2007 09:59

Re: Wie Umsatz pro ID und MasterID ermitten?
 
Edit: OK, ich sehe dataspider hat knapp vor mir gepostet.

Zitat:

Zitat von mkinzler
Für FB ist das kein Problem, wenn man CASE oder IIF verwendet.

Ich hab noch nie mit CASE oder IIF gearbeitet. IFF von Firbird 1.5 auch nicht unterstützt zu werden. Ich habe mal eine Lösung mit CASE probiert:

SQL-Code:
select
  CASE
    WHEN masterid IS NULL THEN ID
  ELSE
    masterid
  END as XID, sum(Umsatz)
from ATable
group by XID
Hier kommt folgende Fehlermeldung:

Zitat:

Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
XID.
At line 8, column 10.

dataspider 21. Mär 2007 10:01

Re: Wie Umsatz pro ID und MasterID ermitten?
 
Antwort siehe Posting über deinem...

ab FB2 wird - glaube ich - die Verwendung von Aliasnamen bei group by unterstützt.

Cu, Frank

mkinzler 21. Mär 2007 10:02

Re: Wie Umsatz pro ID und MasterID ermitten?
 
IIF wird erst ab FB2 unterstützt.

BlueStarHH 21. Mär 2007 10:05

Re: Wie Umsatz pro ID und MasterID ermitten?
 
Hi dataspider,

danke für den Code. Doch da stimmt irgendwas nicht. Der Wert zur ID 2 ist zu hoch:

SQL-Code:
ID   SUM
1   20,40
2   16,40
3    3,80
4    7,99

dataspider 21. Mär 2007 10:09

Re: Wie Umsatz pro ID und MasterID ermitten?
 
Liste der Anhänge anzeigen (Anzahl: 1)
... ich habe deine Zahlen genommen und erhalte 12,00 für ID 2.

BlueStarHH 21. Mär 2007 10:21

Re: Wie Umsatz pro ID und MasterID ermitten?
 
OK, danke klappt nun. Ich hab den IB-Expert nochmal neu gestartet und nun stimmen die Zahlen. Wahr wohl ein vergessenes Commit oder ähnliches...


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:20 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