![]() |
Datenbank: MS SQL • Version: Aktuell • Zugriff über: HeidiSql
SQL Summierung
Moin,
ich knobel schon ein wenig an einer Abfrage, komm aber nicht weiter und hoffe das mir jemand helfen kann :-) Ich habe 2 Tabellen: Aufträg und Zahlungen, beide verknüpft über die AuftragsNr. Ich möchte mir alle Aufträge anzeigen lassen zu denen HEUTE Zahlungen eingegangen sind und zwar die gesammte Summe aller Zahlungen, quasi den Saldo.
Code:
Das klappt soweit und zeigt die heutigen Zahlungen an (es können auch mehrere Zahlungen pro Auftrag an einem Tag kommen).
SELECT tbl_auftrag1.anr, tbl_auftrag1.a_name,
sum(tbl_zahlungen.ratenwert) as SummeZahlungen, count(tbl_zahlungen.ratendatum) as Anzahl FROM (tbl_zahlungen INNER JOIN tbl_auftrag1 ON tbl_auftrag1.anr = tbl_zahlungen.fsanr) WHERE CONVERT(varchar(8), tbl_zahlungen.ratendatum, 112) = CONVERT(varchar(8), GetDate(), 112) GROUP BY tbl_auftrag1.anr, tbl_auftrag1.a_name Aber es fehlen natürlich die in der Vergangenheit schon geleisteten Zahlungen. Hat jemand eine Idee ? Danke schonmal im vorraus. Gruß Sigi |
AW: SQL Summierung
Was ist jetzt die Frage?
Du willst die Summe von HEUTE und die hast Du. Dass der Rest fehlt, ist klar, den wolltest Du ja nicht und hast die Daten auf den aktuellen Tag eingeschränkt. Apropos: Diese Einschränkung ist schlecht umgesetzt. Du solltest das ohne Konvertierung des Tabellenfeldes machen, damit ein ggF. vorhandener Index greifen kann. |
AW: SQL Summierung
Hallo JoBo,
Zitat:
Ich möchte nur die Aufträge sehen zu denen HEUTE Zahlungen eingegangen sind, und zwar nicht nur den Tagessaldo, sondern den Gesamtsaldo, also incl. ALLER bisher geleisteten Zahlungen. |
AW: SQL Summierung
Man könnte die Aufgabe auch so beschreiben:
Zitat:
|
AW: SQL Summierung
Zitat:
Mit dem Codebeispiel wollte ich nur zeigen auf welchem Weg ich bin und wie weit ... cu Sigi |
AW: SQL Summierung
Aufträge mit einer Zahlung an dem Tag
Delphi-Quellcode:
datum
SQL-Code:
Saldo aller Aufträge
select distinct fsanr
from tbl_zahlungen where ratendatum = :datum
SQL-Code:
Und jetzt alles zusammen:
SELECT
fsanr, sum(ratenwert) as SummeZahlungen, count(ratendatum) as Anzahl FROM tbl_zahlungen GROUP BY fsanr
SQL-Code:
Und hier nochmal vereinfacht zum herumspielen
select
a.anr, a.a_name, Saldo.SummeZahlungen, Saldo.Anzahl from tbl_auftrag1 as a join ( SELECT fsanr, sum(ratenwert) as SummeZahlungen, count(ratendatum) as Anzahl FROM tbl_zahlungen GROUP BY fsanr ) as Saldo on Saldo.fsanr = a.anr where a.anr in ( select distinct fsanr from tbl_zahlungen where ratendatum = :datum ) ![]() |
AW: SQL Summierung
Wow, yes, SIR!
hab mir das schon gedacht, das da irgenwie ein SubSelect dazu muss ... Zitat:
Und dann hab ich mir das Konstrukt mal Wort für Wort angeschaut und in
SQL-Code:
[/QUOTE]
...
where a.anr in ( select distinct [B]fsanr[/B] from tbl_zahlungen where ratendatum = :datum ) geändert ... und BINGO, jetzt passt es !!:-D:-D Aber das war bestimmt Absicht, um mich etwas auf Drehzahl zu bringen :-) 1000 Dank nochmal !! Gruß Sigi |
AW: SQL Summierung
Nee, war nur so ein Vertipper, ich hab das einfach nur so dahingeschrieben ohne Evaluierung. Ist im Beitrag jetzt auch korrigiert.
Im Fiddle-Link ist es korrekt gewesen ;) |
AW: SQL Summierung
Moin SIR,
war dieser "Fiddle-Link" gestern auch schon da? Wenn ja, hab ich den komplett übersehen ... Der Vertipper war aber nicht schlecht ..., zwingt einen genauer hinzusehen :-) Vielen Dank nochmal ... Gruß Sigi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 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-2025 by Thomas Breitkreuz