AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Summierung

Ein Thema von Sigi55 · begonnen am 22. Aug 2015 · letzter Beitrag vom 23. Aug 2015
Antwort Antwort
Sigi55

Registriert seit: 3. Jan 2010
36 Beiträge
 
Delphi 5 Professional
 
#1

SQL Summierung

  Alt 22. Aug 2015, 20:37
Datenbank: MS SQL • Version: Aktuell • Zugriff über: HeidiSql
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:
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
Das klappt soweit und zeigt die heutigen Zahlungen an (es können auch mehrere Zahlungen pro Auftrag an einem Tag kommen).
Aber es fehlen natürlich die in der Vergangenheit schon geleisteten Zahlungen.

Hat jemand eine Idee ?
Danke schonmal im vorraus.

Gruß

Sigi
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: SQL Summierung

  Alt 22. Aug 2015, 20:49
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Sigi55

Registriert seit: 3. Jan 2010
36 Beiträge
 
Delphi 5 Professional
 
#3

AW: SQL Summierung

  Alt 22. Aug 2015, 21:16
Hallo JoBo,

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.
sry, dann hab ich das unverständlich rübergebracht.

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.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: SQL Summierung

  Alt 22. Aug 2015, 21:22
Man könnte die Aufgabe auch so beschreiben:
Zitat:
Hole mir alle Aufträge, bei denen heute eine Zahlung eingegangen ist und teile mir von diesen Aufträgen den Saldo mit.
Mit dieser Beschreibung hat man auch schon den ersten Schritt zur Lösung
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Sigi55

Registriert seit: 3. Jan 2010
36 Beiträge
 
Delphi 5 Professional
 
#5

AW: SQL Summierung

  Alt 22. Aug 2015, 21:29
Man könnte die Aufgabe auch so beschreiben:
Zitat:
Hole mir alle Aufträge, bei denen heute eine Zahlung eingegangen ist und teile mir von diesen Aufträgen den Saldo mit.
Mit dieser Beschreibung hat man auch schon den ersten Schritt zur Lösung
Bingo !! Endlich bringt es mal jemand auf den Punkt

Mit dem Codebeispiel wollte ich nur zeigen auf welchem Weg ich bin und wie weit ...

cu

Sigi
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: SQL Summierung

  Alt 22. Aug 2015, 21:47
Aufträge mit einer Zahlung an dem Tag datum
SQL-Code:
select distinct fsanr
from tbl_zahlungen
where ratendatum = :datum
Saldo aller Aufträge
SQL-Code:
SELECT
  fsanr,
  sum(ratenwert) as SummeZahlungen,
  count(ratendatum) as Anzahl
FROM tbl_zahlungen
GROUP BY fsanr
Und jetzt alles zusammen:
SQL-Code:
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 )
Und hier nochmal vereinfacht zum herumspielen
http://sqlfiddle.com/#!3/d66ab/3
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (23. Aug 2015 um 08:23 Uhr)
  Mit Zitat antworten Zitat
Sigi55

Registriert seit: 3. Jan 2010
36 Beiträge
 
Delphi 5 Professional
 
#7

AW: SQL Summierung

  Alt 23. Aug 2015, 08:21
Wow, yes, SIR!

hab mir das schon gedacht, das da irgenwie ein SubSelect dazu muss ...

Und jetzt alles zusammen:
SQL-Code:
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 anr
  from tbl_zahlungen
  where ratendatum = :datum )
...nur hat mich das Beispiel schon wieder leicht an den Rand des Wahnsinns gebracht - es liefert ALLE Zeilen ?!
Und dann hab ich mir das Konstrukt mal Wort für Wort angeschaut und in

SQL-Code:
...
where a.anr in (
  select distinct [B]fsanr[/B]
  from tbl_zahlungen
  where ratendatum = :datum )
[/QUOTE]
geändert ... und BINGO, jetzt passt es !!

Aber das war bestimmt Absicht, um mich etwas auf Drehzahl zu bringen

1000 Dank nochmal !!

Gruß

Sigi
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: SQL Summierung

  Alt 23. Aug 2015, 08:25
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Sigi55

Registriert seit: 3. Jan 2010
36 Beiträge
 
Delphi 5 Professional
 
#9

AW: SQL Summierung

  Alt 23. Aug 2015, 08:39
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 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