stefankct
Goto Top

SQL Abfrage mit Summierung und Gruppierung

Hallo zusammen,

ich sitze heute über eine SQL Abfrage für eine interne Erweiterung und komme nicht mehr weiter.

Ich müsste aus der Tabelle Menge die Mengen (int) summieren und dazu aber noch 2 Spalte gruppieren um den Wert bzw. Duplikate zu ermitteln.

anbei mal ein Beispiel und darunter die Lösung wie das Ergebnisse in der Abfrage aussehen soll.
Die Abfrage soll in eine Userform eingebaut werden um so immer online die neusten nach einem Timer zu erhalten.

SQL Datenbank
erledigt		Kabel		Länge		Ziel1		Ziel2		Menge
false		KA00003		357		KO10089		KO10088		100
false		KA00004		357		KO10089		KO10088		100
false		KA00005		427		KO10089		KO10088		100
false		KA00005		427		KO10089		KO10088		100
false		KA00005		427		KO10089		KO10088		100
false		KA00005		427		KO10089		KO10088		100
false		KA00009		50		KO10088		KO10088		100
false		KA00012		357		KO10089		KO10088		100

Tabelle ist Menge
Wenn erledigt ist True soll diese zeile nicht mehr berechnet werden

Ergebnis in Etwa so: Info Spalte nur als Info

										
Material		Menge		Infos						
KA00003		35700		Ergebnis im Anschluss noch teilen durch 1000 für Meter						
KA00004		35,7		Ergebnis teilen durch 1000 für Meter						
KA00005		170,8		Ergebnis teilen durch 1000 für Meter						
KA00009		5		Ergebnis teilen durch 1000 für Meter						
KA00012		35,7		Ergebnis teilen durch 1000 für Meter		
				
KO10089		700		Summewenn Kontakt gleich in Ziel1 und Ziel2 dann Summe in Menge						
KO10088		900		Summewenn Kontakt gleich in Ziel1 und Ziel2 dann Summe in Menge						
		


Würde mich über Lösungsansätze freuen.
Gruss Stefan

Content-Key: 491103

Url: https://administrator.de/contentid/491103

Printed on: April 25, 2024 at 15:04 o'clock

Member: akretschmer
akretschmer Sep 03, 2019 at 15:42:29 (UTC)
Goto Top
wie soll man z.B. für KA00003 auf 35700 und für KA00004 auf 35,7 kommen? Woher kommt K010089 im Ergebniss?

Merke: Beispiele sind gut, aber nur, wenn man diese nachvollziehen kann. Dies scheint mir hier nicht gegeben. Tut mir leid.
Member: emeriks
emeriks Sep 03, 2019 at 15:44:18 (UTC)
Goto Top
Hi,
Deine Angaben sind nicht hilfreich.
Gib bitte konkret an:
  • Tabelle mit Phantasie-Daten
  • Rechenweg
  • Wunschausgabe konkret basierend auf den von Dir genannten Phantasie-Daten
Dann könnte man vielleicht auch ohne Glaskugel nachvollziehen, was bisher nur in Deinem Kopf vorgeht.

E.
Member: em-pie
Solution em-pie Sep 03, 2019 updated at 18:03:13 (UTC)
Goto Top
Moin,

wenn ich dich richtig verstanden habe, müsste dein SQL (ungetestet) so aussehen:
select KABEL as MATERIAL, sum(LÄNGE * (MENGE/1000)) as LAENGE from MENGE where ERLEDIGT <> 'true' group by KABEL  
Union All
select ZIEL1, sum(MENGE) as MENGE from MENGE where ZIEL1 = ZIEL2 and ERLEDIGT <> 'true' group by ZIEL1  

Die Division durch 1000 bekämest du sicherlich selbst hin.


@akretschmer, @emeriks
eigentlich Nachvollziehbar - denke ich.
Die K010089 bzw. K010089 sind die Summe derer, bei denen Ziel1 = Ziel2

Bei den ganzen KAxxxxxx-Datensätzen hat er selbst bereits Divisionen zur Einheitenumrechnungen durchgeführt...


Gruß
em-pie

Edit: hatte vergessen, Länge + Menge zu berechnen.
Member: akretschmer
akretschmer Sep 03, 2019 at 17:58:33 (UTC)
Goto Top
Du bist halt ein Genie, ich verneige mich vor Dir!
Member: StefanKCT
StefanKCT Sep 03, 2019 at 18:37:13 (UTC)
Goto Top
KA00004 wäre als Beispiel bereits durch die 1000 geteilt, das von mm der Meter Wert ausgegeben wird.

KO10089 sind alle Teile als 1 Stück gewertet und mit der Menge multipliziert.

Sorry wenn ich mich hier etwas so unklar ausgedrückt habe.
Member: StefanKCT
StefanKCT Sep 03, 2019 updated at 18:48:31 (UTC)
Goto Top
Hi em-pie,

Mega vielen Dank, da wäre ich nie drauf gekommen, aber erfüllt genau was ich gesucht hab.
Eins habe ich noch, mit den KO Teilen, da hatte ich mich falsch ausgedrückt, er soll mir nicht nur zurück spielen die Mengen wenn Ziel1 =Ziel2 sondern alle.

Quasi so. nur das er mir noch Ziel1 und Ziel2 zusammen summiert im Ergebnis:
select KABEL as MATERIAL, sum(LÄNGE * MENGE/1000) as LAENGE from Menge where ERLEDIGT <> 'true' group by KABEL  
Union All
select ZIEL1, sum(MENGE) as MENGE from VK1 Menge ERLEDIGT <> 'true' group by ZIEL1  
Union All
select ZIEL2, sum(MENGE) as MENGE from VK1 Menge ERLEDIGT <> 'true' group by ZIEL2  

Stefan