Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Access / SQL Fragen erlaubt?

Access / SQL Fragen erlaubt?
16.06.2020 07:57:32
Klaus
Hallo Excel-Kollegen,
ich weiß dass hier Fragen zu Word ziemlich verpönt sind. Andererseits werden Fragen zu Powerpoint, Outlook usw. gerne beantwortet, wenn diese nur aus einem Excel Script heraus aufgerufen werden.
Ich habe nun eine etwas komplexere SQL-Frage und weiss dass hier auch zu dem Thema einige Spezis mitlesen. Das bezieht sich sogar auf Excel - ich erstelle mit einem Script die SQL-Phrase und kopiere das Ergebniss in eine Tabelle :-) Aber das drumherumn bekomme ich hin, ich brauche tatsächlich nur Hilfe beim SQL Befehl.
Darf ich die (längere) Frage dazu hier stellen, ohne wegen Offtopic auf den Deckel zu bekommen? Alternativ, was mir sogar lieber währe da ich bestimmt noch mehr Fragen zu SQL habe:
Hat jemand einen Tipp für ein spezialisiertes SQL-Forum, das eine ähnlich geile Userbase auszeichnet wie herber.de?
LG,
Klaus M.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Access / SQL Fragen erlaubt?
16.06.2020 10:35:57
Luschi
Hallo Klaus,
warum fragst Du so komisch? Ich selbst habe Dir schon einige Male zu Access-Fragen geantwortet, aber selten eine schlüssige Antwort erhalten; siehe:
https://www.herber.de/forum/cgi-bin/callthread.pl?index=1732270#1732278
Wenn Du nicht willst, daß der Fragen-Beantworter erfährt, ob sein Lösungsvorschlag was brachte, dann lese ich Deine Fragen auch nicht mehr.
Gruß von Luschi
aus klein-Paris
AW: Access / SQL Fragen erlaubt?
16.06.2020 11:55:50
Klaus
Hallo Luschi,
sei doch nicht eingeschnappt! Ich habe damals ein "Danke für die Antworten!" drunter geschrieben und dann damit rumprobiert, in der Zeit ist der Thread aus den aktiven gefallen. Oder bist du böse, weil ich in einer Antwort gleichzeitig Karl-Heinz und dir gedankt habe?
https://www.herber.de/forum/cgi-bin/callthread.pl?index=1732270#1732501
Hätte Herber eine Facebook-ähnliche "Like!" Funktion, hättest du sicher schon mehrmals einen Daumen von mir bekommen .... zum Glück gibts das hier nicht :-)
(hat übrigens wunderbar funktioniert damals).
Nein, diesmal habe ich eine wirklich komplizierte und lange, reine SQL Frage mit keinerlei Excel Bezug (ausser dass ich das Ergebniss nach Excel kopiere). Und ich wollt hier einfach nicht mit einem riesen Offtopic "mit der Tür ins Haus" fallen, ohne vorher mal nachgefragt zu haben. Ich darf ja nicht riskieren, dass Hajo sonst böse wird :-)
LG,
Klaus
Anzeige
Dann komm doch mal zur Sache! (owT)
16.06.2020 13:34:59
EtoPHG

AW: Dann komm doch mal zur Sache! (owT)
16.06.2020 17:07:45
Luschi
Hallo Klaus,
genau, laß doch mal sehen, was Du vor hast.
Gruß von Luschi
aus klein-Paris
PS: Warum bringst Du denn Hajo hier ins Spiel, er hält sich beim Thema Access total raus.
AW: Dann komm doch mal zur Sache! (owT)
17.06.2020 06:42:34
Klaus
Hallo Freunde,
folgendermaßen sieht meine Datenbasis aus (das original ist hundert Spalten breit und 100.000 Zeilen lang, darum möchte ich es lieber in SQL lösen als in Excel)
Userbild
Das ist ein dump aus SAP, ich ziehe wöchentlich die Produktionszahlen und überführe den SAP-Download in eine AccessDB um ihn dort besser auswerten zu können. SAP loggt mir jede Aktivität einer Maschine in einer Linie - leider gibt es keinerlei Flagge um zu sehen, ob ein Auftrag noch "in Arbeit" oder bereits "fertig" ist. Da ich die Zahlen etwa eine Woche rückwirkend auswerte ist meine Annahme: Was ein paar Tage lang nicht mehr bearbeitet wurde ist "fertig" - das passt auch, bei uns steht eigentlich nichts herum.
Ich möchte jetzt wissen:
Wie viele Geräte sind am 12.06. in den Linien A1 / A2 / A3 jeweils fertig geworden? Und wie viele am 13.06.?
Ich muss also die Nummer "Auftrag" irgendwie Distinct nach "MAX EndDate" zählen, und das pro Linie.
Besonderheiten: Ein Auftrag kann auch über verschiedene Linien gehen. Auftrag 222 im Beispiel ist am 12.06. in Linie A3 fertig und gilt dort als Ausgang, geht aber ebenfalls am 13.06. aus Linie A2 und gilt auch dort als Ausgang! Daher kann ich nicht einfach "Top 1" aus "order by EndDateTime" selektieren.
Die Manschinenreihenfolge spielt keine Rolle. Ausschlaggebende Spalte zum zählen ist "EndDateTime", zum auswerten des Tages habe ich aber eine Spalte "EndDate" ohne Uhrzeit zur Verfügung.
Der Pseudo-SQL Code mit Excelformeln :-) müsste so aussehen:
Linie A1, 13.06.
Select distinct count (*) from [Datenbank] where EndDate = '13.06.' and Linine = 'A1' WENN EndDate = max(EndDate where Linie = A1 and Auftrag = distinct)
In Excel könnte ich das relativ einfach lösen (mit Hilfsspalten und Zählenwenn). Ich möchte aber ein Cockpit für die Chefs erstellen, in dem "auf Knopfdruck" die Zahlen der letzten Woche erscheinen. Wenn ich dazu erst ein halbes dutzend langer Temporärer Tabellen (eine pro Linie) erstelle und diese per VBA auswerte, dauert das zu lange - bis dahin haben die hohen Herren und Damen ihre Geduld verloren :-) Darum hoffe ich, ebendiese Abfrage relativ schnell direkt aus der Datenbank in die Tabelle zu holen.
Mein SQL-Level:
Ich habe das Buch "SQL für Dummies" zur Hälfte gelesen.
Grafik nochmal als xlsx:
https://www.herber.de/bbs/user/138351.xlsx
LG,
Klaus
Anzeige
SQL, COUNT, GROUP BY
17.06.2020 10:05:47
EtoPHG
Hallo Klaus,
Da fehlt es tatsächlich an Basis SQL Wissen. Ein gute Referenz wäre z.B. das SQL Tutorial.
Dein Construct müsste in etwa lauten:
SELECT EndDate, Linie, Count(Auftrag)
FROM table
WHERE EndDate=DateValue(parameterAsDateString)
GROUP BY EndDate, Linie
ORDER BY 1,2

die WHERE Klausel kann natürlich variert werden, z.b. durch Ergänzung mit BETWEEN, oder grösser, kleiner etc. Und sie könnte auch gezielt durch Linien-Nr eingeschränkt werden (z.B. linie in ('A1','A2','A3'). Sie liesse sich auch komplett weglassen, dann bekommst du eine Auswertung nach Datum/Linie aufsteigend geordnet.
Bei der Aufgabe würde ich allerdings mit PQ (Powerquery) arbeiten, da lassen sich wunderbare Dashboards aufbauen und auf fast beliebige Quelldaten-Typen zugreifen.
Gruess Hansueli
Anzeige
AW: SQL, COUNT, GROUP BY
17.06.2020 12:38:50
Klaus
Hallo Hansueli,
das ist schon sehr gut, aber noch nicht das was ich brauche. Erstmal danke - ich wusste gar nicht dass ich solcherart Listen mir SPQL erstellen kann, das eröffnet mir ganz neue Möglichkeiten :-) Den Link schaue ich mir beizeiten an, aber nicht in den nächsten paar Tagen.
Zum Thema:
Ich habe deinen SQL-Befehl 1:1 abgeschrieben, nur das "DateValue" weggelassen. Was das macht, erforsche ich später.
mySql = "select [EndDate], [Assembly], count([ID]) from [SAP] where [EndDate] = 43959 group by [EndDate], [Assembly] Order by 1,2"
Das zeigt mir jetzt, wieviele Geräte am Datum 43959 (08.05.2020) in Linie (=Assembly) 1, Linie 2 und Linie 3 insgesamt bearbeitet worden. Ich brauche aber nicht diese Count-Summe, sondern ein Auftrag ([ID]) soll nur gezählt werden wenn das gewählte Datum das höchste dieser Assembly ist, und dann genau einmal.
In meinem Minibeispielbild oben ist 333 in Linie A3 am 13.06. NICHT fertig, weil es noch einen Eintrag am 14.06. hat. Jeder Auftrag soll pro Linie nur 1x gezählt werden - am höchsten EndDateTime. Der AUftrag 333 darf also für Linie A3 nur am 14.06. gezählt werden.
Der Auftrag 222 muss für Linie A3 einmal am 12.06. gezählt werden, denn das ist das höchste Datum der A3 dieses Auftrags. Am 13.06. muss Auftrag 222 aber wiederum zählen, nur diesmal für Linie A2. Am 12.06. wird Auftrag 222 nicht gezählt obwohl er bei A2 lief, da es ein höheres EndDateTime für diese Kombination Auftrag / Linie gibt.
Gegen eine PowerQ Lösung hätte ich im ersten Ansatz nichts einzuwenden - aber da ich alles andere per SQL löse währ mir SQL halt lieber. Sonst bringe ich zu viele verschiedene Ansätze (Excel-Formeln, SQL, PowerQ, am besten noch ein paar Pivots) gleichzeitig in die Auswertung, dann steigt da niemand mehr durch falls ich mal nicht mehr da bin.
LG,
Klaus
(SQL ist toll - da muss ich unbedingt dran bleiben)
Anzeige
AW: Dann halt MAX und HAVING lernen
17.06.2020 13:25:46
EtoPHG
Hallo,
Sorry aber ich steig bei deinen Beschreibungen nicht mehr durch.
Ich hab z.B. keine Ahnung was die Column Assembly beinhaltet.
Ebensowenig weiss ich ob eine Auftrags# später doch nochmal auftaucht. Vermutlich ist dein Beispiel so vereinfacht, dass es auf die Realität nicht mehr passt.
Aus Deinem Bildchen (statt Beispielmappe) habe ich meine Vorschlag, für die erwähnten Resultate abgeleitet, aber diese mit den jetzigen Ausführungen zu verbinden gelingt mir nicht.
Vielleicht würde ein EXCEL Beispielmappe mit einem Datenbereich und den erwarteten Resultaten aufgrund 'irgendwelcher Eingaben?' mehr helfen.
Deine Ausführungen tönen nach SQL MAX-Funktionen und der HAVING Klausel. Wenn aber schon mein simpler Vorschlag für dich neu war, rate ich Dir ab, von SQL, da wirst du bestimmt länger brauchen als das unter Zeitdruck eine brauchbare Resultat rauskommt.
Gruess Hansueli
Anzeige
AW: Dann halt MAX und HAVING lernen
17.06.2020 13:38:48
Klaus
Hallo Hansueli,
ich habe doch extra das Bildchen nochmal als Exceldatei drunter gehängt ...
[Assembly] ist die Linie. Ich habe vier Linien, die getrennt ausgewertet werden wollen.
SQL MAX kenne ich, HAVING ist mir neu - danke, jetzt weiss ich wonach ich googeln kann :-) Danke auch für das Tutorial - die ersten 33/52 Fragen habe ich nahezu fehlerfrei durchclicken können, dann verließ es mich. Die Erklärungen zu IN / ALIAS / GROUP BY / JOIN / DATABASE werde ich jetzt eifrig lesen.
Zeitdruck habe ich keinen - das ganze ist natürlich schon mit Excelformeln gelöst. Ich will aber nicht "Schuster bleib bei deinen Leisten" singen, sondern meine Programme verbessern - darum die SQL Fragen.
LG und danke für die Geduld mit den absoluten Neulingsfragen,
Klaus M.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige