title image


Smiley Problem mit SQL Abfrage
Hallo,



ich habe das Problem, das ich (am liebesten:-)))) eine Abfrage erstellen würde, die mir aus der gleichen Datenbasis 2 Spalten nebeneinander darstellt und die Differenz ausweist (Interbase 6.0).



Tabelle 1:



docref

day_batch_id

doc_type



1 1 0

2 1 4

3 2 0

4 2 4



Tabelle 2:



docref

pmnt_id

fsum



1 4 20

2 4 10

3 6 30

4 7 30



Wunschergebnis:



day || summe(doc_type = 0) || summe(doc_type = 4) || Differenz

1 || 20 || 10 || 10

2 || 30 || 30 || 0



Folgende Abfrage funktioniert, allerdings sind Ergebniszeilen pro Tag nach doc_type untereinander ausgewiesen. Es gibt aber pro Tag immer doc_typ 0 oder 4, so dass ich diese gerne nebeneinander stehen hätte, möglichst mit einer zusätzlichen Spalte, um die Differenz auszuweisen.



select pd1.DAY_BATCH_ID, pd1.doc_type, abs(sum(pl1.fsum)) AS COUPON

from pmntdoctrans pd1, pmntlinetrans pl1

where pd1.docref = pl1.docref

and pd1.doc_type in (0,4)

and pl1.pmnt_id between 4 and 8

GROUP by pd1.DAY_BATCH_ID, pd1.doc_type



Die nachfolgende Abfrage bildet leider die falschen Summen, in fsum können aber auch negative Werte stehen:



select pd1.DAY_BATCH_ID, pl1.pmnt_id, pmnt.pmnt_name,

abs(sum(pl1.fsum)) as COUPON_SALES,

abs(sum(pl2.fsum)) as COUPON_DROP

from pmntdoctrans pd1, pmntlinetrans pl1, pmnt,

pmntdoctrans pd2, pmntlinetrans pl2

where pd1.docref = pl1.docref

and pd1.doc_type = 0

and pl1.pmnt_id = pmnt.pmnt_id

and pd2.docref = pl2.docref

and pd2.doc_type = 4

and pl2.pmnt_id = pmnt.pmnt_id

and pd1.DAY_BATCH_ID = pd2.DAY_BATCH_ID

and pl1.pmnt_id = pl2.pmnt_id

and pmnt.pmntcode_id = 5

GROUP by pd1.DAY_BATCH_ID, pl1.pmnt_id, pmnt.pmnt_name





Vielen Dank im Voraus ......



Franc

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: