teccara 10 Geschrieben 28. Mai 2012 Melden Teilen Geschrieben 28. Mai 2012 Hallo *, ich hänge jetzt schon mehrere Tage an einer Abfrage und scheine mich so verrannt zu haben, dass ich das Licht am Ende des Tunnels nicht mehr sehe. Meine Anwendung pflegt Maschinen-Reparaturen. Nun möchte ich alle Reparaturen der Maschinen auflisten und Abfrage auf der Störungen auf die TOP 10 Maschinen mit den meisten Störungen ermitteln Anbei mein Ansatz. Wobei dieser kein Ergebnis liefert, da meine Unterabfrage den Count(*) und T.WONUM zurück liefert. Ohne die Unterabfrage liefert mir der Aufruf leider alle Reparuren, aller Maschinen zurück. Vielleicht findet jemand einen Moment, um einen Blick drauf zu werfen, um einen Gedankenanstoß zu liefern. SELECT WOP.CLOSEDATE AS Arbeitsdatum ,WOP.EQNUM AS Maschine ,WOEQLIST.SERIALNUM AS MaNr ,WOMETER.METERREADING AS BetrStd ,WOP.ITEMNUM AS Sachnmummer ,WOP.DESCRIPTION AS Bezeichnung ,(WOP.TOTALUNITCOST / WOP.QTYUSED) AS Einzelpreis ,WOP.QTYUSED AS Ausg ,WO.TASKDESC AS Bemerkung ,WOE.EMPCODE AS ArbnNr ,WO.WONUM AS Referenz ,(SELECT COUNT(*) FROM WOP INNER JOIN WO ON WOP.WONUM = WO.WONUM WHERE WOP.CLOSEDATE > 1900-01-01 AND WO.WONUM = WOP.WONUM)AS Zaehler FROM WO INNER JOIN WOP ON WO.WONUM = WOP.WONUM LEFT JOIN WOEQLIST ON WO.WONUM = WOEQLIST.WONUM LEFT JOIN WOMETER ON WO.WONUM = WOMETER.WONUM LEFT JOIN WOE ON WO.WONUM = WOE.WONUM WHERE WOP.WONUM IN (SELECT TOP 10 T.WONUM, COUNT(*) as MyCount FROM WOP AS T WHERE T.WONUM = WOP.WONUM GROUP BY T.WONUM ORDER BY MyCount DESC ) AND WOP.CLOSEDATE > 1900-01-01 ORDER BY Zaehler, WOP.CLOSEDATE DESC Vielen Dank im voraus für Eure Unterstützung. Gruß Dirk Zitieren Link zu diesem Kommentar
JuKo 10 Geschrieben 29. Mai 2012 Melden Teilen Geschrieben 29. Mai 2012 Benutzt du die Express-Edition? Zitieren Link zu diesem Kommentar
teccara 10 Geschrieben 29. Mai 2012 Autor Melden Teilen Geschrieben 29. Mai 2012 Teilweise, für das aktuelle Problem nutze ich die Standard und Enterprise Edition. Zitieren Link zu diesem Kommentar
crazyysql 10 Geschrieben 29. Mai 2012 Melden Teilen Geschrieben 29. Mai 2012 use MeineReparaturDatenbank GO /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SCALARE FUNKTION, die den Zähler zurückgibt Übergabeparameter ist wop.closedate ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ USE MeineReparaturdatenbank GO IF OBJECT_ID (N'schema.udf_Zaehler_ermitteln') IS NOT NULL DROP FUNCTION schema.udf_Zaehler_ermitteln GO -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CREATE FUNCTION schema.udf_Zaehler_ermitteln ( @udf_wop_closedate date ) RETURNS int WITH EXECUTE AS ???????????????? AS BEGIN RETURN (SELECT COUNT(*) FROM WOP INNER JOIN WO ON WOP.WONUM = WO.WONUM WHERE WOP.CLOSEDATE > 1900-01-01 AND WO.WONUM = WOP.WONUM) END GO -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- VIEW erstellen -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IF EXISTS(SELECT name FROM sys.views WHERE name = N'vTOP10WONUM') DROP VIEW vTOP10WONUM GO CREATE VIEW schema.vTOP10WONUM AS SELECT TOP 10 T.WONUM as 'WonumReferenz' ,COUNT(*) as 'MyTop10Count' FROM WOP AS T WHERE T.WONUM = WOP.WONUM GROUP BY T.WONUM ORDER BY MyCount DESC ) -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- jetzt Dein SELECT -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SELECT WOP.CLOSEDATE AS Arbeitsdatum ,WOP.EQNUM AS Maschine ,WOEQLIST.SERIALNUM AS MaNr ,WOMETER.METERREADING AS BetrStd ,WOP.ITEMNUM AS Sachnmummer ,WOP.DESCRIPTION AS Bezeichnung ,(WOP.TOTALUNITCOST / WOP.QTYUSED) AS Einzelpreis ,WOP.QTYUSED AS Ausg ,WO.TASKDESC AS Bemerkung ,WOE.EMPCODE AS ArbnNr ,WO.WONUM AS Referenz ,schema.udf_Zaehler_ermitteln(WOP.CloseDate) AS Zaehler FROM WO INNER JOIN WOP ON WO.WONUM = WOP.WONUM LEFT JOIN WOEQLIST ON WO.WONUM = WOEQLIST.WONUM LEFT JOIN WOMETER ON WO.WONUM = WOMETER.WONUM LEFT JOIN WOE ON WO.WONUM = WOE.WONUM WHERE WOP.WONUM IN (SELECT mytop10Count FROM vTOP10WONUM WHERE vTOP10WONUM.WonumReferenz = WOP.WONUM ORDER BY MyCount DESC ) AND WOP.CLOSEDATE > 1900-01-01 ORDER BY Zaehler , WOP.CLOSEDATE DESC Zitieren Link zu diesem Kommentar
crazyysql 10 Geschrieben 29. Mai 2012 Melden Teilen Geschrieben 29. Mai 2012 CREATE FUNCTION schema.udf_Zaehler_ermitteln ( @udf_wop_closedate date ) RETURNS int WITH EXECUTE AS ???????????????? AS BEGIN RETURN (SELECT COUNT(*) FROM WOP INNER JOIN WO ON WOP.WONUM = WO.WONUM WHERE @udf_wop_closedate > 1900-01-01 AND WO.WONUM = WOP.WONUM) END GO Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.