Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQl-Abfrage gesucht (https://www.delphipraxis.net/92938-sql-abfrage-gesucht.html)

Angel4585 29. Mai 2007 08:55

Datenbank: MySQL • Version: 5 • Zugriff über: ZEOS

SQl-Abfrage gesucht
 
Hallo,

ich soll ein Ergebnis aus Datensätzen liefern das so aussieht:

Zeile 1: Nettosumme MwStSumme für Alle DS wo MwSt > 0
Zeile 2: Nettosumme MwStSumme für Alle DS wo MwSt = 0

Weis jemand wie ich das in ein SQL-Statement bringe?

Ist bestimmt einfach nur durch meine Erkältung krieg ich grad garnix auf die Reihe :(

Danke schonmal

:angel:

DeddyH 29. Mai 2007 09:03

Re: SQl-Abfrage gesucht
 
Ungetestet:
SQL-Code:
SELECT SUM(Preis) AS Nettosumme
FROM Tabelle
WHERE MwST > 0
UNION
SELECT SUM(Preis) AS Nettosumme
FROM Tabelle
WHERE MwST = 0

Jürgen Thomas 29. Mai 2007 10:04

Re: SQl-Abfrage gesucht
 
Ungetestet (und ich bin mir unsicher, weil ich noch zu wenig gemacht habe):
SQL-Code:
SELECT SUM(Preis) AS Nettosumme, MwST
FROM Tabelle
GROUP BY MwST
Das Ergebnis entspricht nicht ganz der Vorgabe, ist dafür vollständiger.

Gruß Jürgen

Angel4585 4. Jun 2007 10:49

Re: SQl-Abfrage gesucht
 
Also die UNION-Verison von Deddy funktioniert, jetzt brauche ich nur das gleiche nochmal anders:

Zeile: Monat, Summe der NettoBeträge mit MwSt, Summe der MwStBeträge mit MwSt, Summe der NettoBeträge ohne MwSt, Summe der MwStBeträge ohne MwSt, Gesamtsumme

Wenn bei einer Unterabfrage kann ich mir vorstellen dauert das ziemlich lange, geht das ohne auch anders?

mkinzler 4. Jun 2007 10:54

Re: SQl-Abfrage gesucht
 
Wie sieht den die DB-Struktur aus?

Angel4585 4. Jun 2007 11:41

Re: SQl-Abfrage gesucht
 
ich hab ne Tabelle:

ID,Datum, Netto, Rabatt, NettoNachRabatt, MwSt, Brutto

da sind DS drin bei denen es MwSt geibt und welche ohne MwSt.

ich ahb das mit den SubSelects jetzt gemacht, bekomme aber das Problem das ich wenn ich die MOnateweise ausgeben will innerhalb der Subselects keine Group by oder Order By verwenden kann und somit ich folgende Ausgabe bekomme:

Monat1: Gesamt von Monat1-n
Monat2: Gesamt von Monat1-n
usw.

das sieht jetzt so aus:

SQL-Code:
select
(select sum(netto) from tabelle where mwst="0" and datum in "filterzeitraum")SummeOhneMwSt,
(select sum(netto) from tabelle where mwst>"0" and datum in "filterzeitraum")SummeMitMwSt,
sum(netto)GesamtSumme
from tabelle where datum in "filterzeitraum" group by monate(datum)
(Wie immer nicht genauso, aber vom Prinzip sieht es im Moment so aus)

mkinzler 4. Jun 2007 11:50

Re: SQl-Abfrage gesucht
 
Du könntest es mit einem Join versuchen:
SQL-Code:
select
    t1.monat, sum(t1.netto) SummeOhneMwSt,
    (t2.netto) SummeMitMwSt, sum(t1.netto+t2.netto) GesamtSumme
from
    tabelle t1, tabelle t2
where
    t1.datum "filterzeitraum" and t1.mwst=0 and
    t2.datum "filterzeitraum" and t2.mwst>=0
group by
    t1.monat, t2.monat

Angel4585 4. Jun 2007 14:50

Re: SQl-Abfrage gesucht
 
jetzt vervielfachen sich plötzlich die summen, keine Ahung um welchen Faktor, aber es sind Zahlen wie 5 Mio anstatt 800 :shock:

mkinzler 4. Jun 2007 14:53

Re: SQl-Abfrage gesucht
 
Welche Summen?
Hier hab ich das in vergessen zu Kopieren
SQL-Code:
...
where
    t1.datum in "filterzeitraum" and t1.mwst=0 and
    t2.datum in "filterzeitraum" and t2.mwst>=0 
...

Angel4585 4. Jun 2007 15:25

Re: SQl-Abfrage gesucht
 
dieses sum(netto) schmeisst mir als ergebnis ein vielfaches von dem aus was eigentlich rauskommen sollte.

was genau passiert eigentlich in diesen statement?

mkinzler 4. Jun 2007 15:29

Re: SQl-Abfrage gesucht
 
Hast du die Bedingung korrigiert?
Er erzeugt 2 Abfragen und erzeugt einen Join daraus.

Angel4585 4. Jun 2007 15:34

Re: SQl-Abfrage gesucht
 
OK, ich hab zwar bis jetzt versucht das ganze eher weniger kompley zu mahcen aber ich poste jetzt vllt doch mal die momentane SQL-Abfrage:
SQL-Code:
select
(sum(r1.NettoNachRabatt))NettoOhne,
(sum(r1.MwSt))MwStOhne,
(sum(r1.Betrag))GesamtOhne,
(sum(r2.NettoNachRabatt))NettoMit,
(sum(r2.MwSt))MwStMit,
(sum(r2.Betrag))GesamtMit,
(sum(r3.NettoNachRabatt))NettoSumme,
(sum(r3.MwSt))MwStSumme,
(sum(r3.Betrag))GesamtSumme
from Rechnungen r1, Rechnungen r2, Rechnungen r3 
where

(r1.MwSt="0")and ((YEAR(FROM_UNIXTIME(r1.Erstellungsdatum))>="2007")AND(YEAR(FROM_UNIXTIME(r1.Erstellungsdatum))<="2007")) and ((((MONTH(FROM_UNIXTIME(r1.Erstellungsdatum))>="1")AND(MONTH(FROM_UNIXTIME(r1.Erstellungsdatum))<="6")AND(YEAR(FROM_UNIXTIME(r1.Erstellungsdatum))="2007"))OR((MONTH(FROM_UNIXTIME(r1.Erstellungsdatum))>"0")AND(YEAR(FROM_UNIXTIME(r1.Erstellungsdatum))<"2007")AND(YEAR(FROM_UNIXTIME(r1.Erstellungsdatum))>"2007")))) and (DAY(FROM_UNIXTIME(r1.Erstellungsdatum))>"0") and

(r2.MwSt>"0")and ((YEAR(FROM_UNIXTIME(r2.Erstellungsdatum))>="2007")AND(YEAR(FROM_UNIXTIME(r2.Erstellungsdatum))<="2007")) and ((((MONTH(FROM_UNIXTIME(r2.Erstellungsdatum))>="1")AND(MONTH(FROM_UNIXTIME(r2.Erstellungsdatum))<="6")AND(YEAR(FROM_UNIXTIME(r2.Erstellungsdatum))="2007"))OR((MONTH(FROM_UNIXTIME(r2.Erstellungsdatum))>"0")AND(YEAR(FROM_UNIXTIME(r2.Erstellungsdatum))<"2007")AND(YEAR(FROM_UNIXTIME(r2.Erstellungsdatum))>"2007")))) and (DAY(FROM_UNIXTIME(r2.Erstellungsdatum))>"0") and

((YEAR(FROM_UNIXTIME(r3.Erstellungsdatum))>="2007")AND(YEAR(FROM_UNIXTIME(r3.Erstellungsdatum))<="2007")) and ((((MONTH(FROM_UNIXTIME(r3.Erstellungsdatum))>="1")AND(MONTH(FROM_UNIXTIME(r3.Erstellungsdatum))<="6")AND(YEAR(FROM_UNIXTIME(r3.Erstellungsdatum))="2007"))OR((MONTH(FROM_UNIXTIME(r3.Erstellungsdatum))>"0")AND(YEAR(FROM_UNIXTIME(r3.Erstellungsdatum))<"2007")AND(YEAR(FROM_UNIXTIME(r3.Erstellungsdatum))>"2007")))) and (DAY(FROM_UNIXTIME(r3.Erstellungsdatum))>"0")
group by DATE_FORMAT(FROM_UNIXTIME(r1.Erstellungsdatum),"%m.%Y")
ich bin grad dabei da etwas den Überblick zu verlieren :duck:

DeddyH 4. Jun 2007 15:35

Re: SQl-Abfrage gesucht
 
Vielleicht so (ungetestet)
SQL-Code:
SELECT t1.monat, SUM(t1.netto) AS SummeNetto, SUM(t2.netto) AS SummeBrutto, SUM(t1.netto + t2.netto) AS Gesamtsumme
FROM Tabelle t1
JOIN Tabelle t2 ON t2.monat = t1.monat
WHERE t1.MwST = 0
AND t2.MwST > 0
AND t1.datum "filterzeitraum"
GROUP BY t1.monat


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz