tiger88 0 Geschrieben 12. Mai 2020 Melden Teilen Geschrieben 12. Mai 2020 (bearbeitet) Hallo Zusammen Das Standard Querry: SELECT * FROM [NLL].[dbo].[UUT_RESULT] Where Station_ID = 'NLICH00014' Problem A: Zu jeder OrderNumber gibt es verschiedene Serialnummern. Problem B; Diese wurden natürlich unterschiedlich getestet (Start_Date_Time). Problem C: Eine Serialnummer könnte mehrmals in einem Auftrag getestet sein, desswegen ist für mich nur der letzte (Start_Date_Time) Zeitstempel für mich relevant, Ich möchte ein Querry das mir jeden Auftrag nur einmal anzeigt und in den weiteren 3 Spalten wieviele Passed, wieviele Failed, wieviele Error von diesem Auftrag sind. So sollte das Ziel Querry aussehen: |Start_Date_Time|Order Number|ArticleNumber|ArticleDescription|Passed|Failed|Error 12.05.2020 | 102345210 | 1111452 | OXE7...| 10 | 2 | 0 ... bearbeitet 12. Mai 2020 von tiger88 Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 12. Mai 2020 Melden Teilen Geschrieben 12. Mai 2020 Subqueries sind Dein Freund: https://www.dofactory.com/sql/subquery Aber Achtung: Nicht zwangläufig performant. Wenn das Ergebnis so benötigt wird, sollte über ein sinnvolleres DB-Design nachgedacht werden. Zitieren Link zu diesem Kommentar
tiger88 0 Geschrieben 12. Mai 2020 Autor Melden Teilen Geschrieben 12. Mai 2020 Ich bin in diesem Bereich absolut Lost :) Könntest du mir ein Beispiel mit "Passed" vielleicht zeigen so dass ich das für die anderen Faktoren adaptieren kann? Zitieren Link zu diesem Kommentar
MDD 12 Geschrieben 12. Mai 2020 Melden Teilen Geschrieben 12. Mai 2020 Bist du dir sicher dass du das start_date_time und order Number in jeder Zeile brauchst? Schaut so aus als würde das in jeder Zeile anders sein, somit kannst du es nicht summieren. Falls nicht versuch es mal so SELECT MIN(Start_Date_Time), ArticleNumber, ArticleDescription, sum(case UUT_State) when 'Passed' then 1 else 0 end) as Passed, sum(case UUT_State) when 'Failed' then 1 else 0 end) as Failed, sum(case UUT_State) when 'Error' then 1 else 0 end) as Error from [BBL_Result].[dbo].[UUT_RESULT] Where Station_ID = 'IPCCHFRA0190' Group by ArticleNumber, ArticleDescription, Wenn du die Ordernumber auch noch brauchst muss die halt ergänzen wie die Artikelnummer. Gruß MDD PS: Auf deinem Screenshot schaut es so aus als wären in den Spaltenbezeichnungen Leerzeichen drinnen, dann musst du [ ] - Klammern setzen. Zitieren Link zu diesem Kommentar
tiger88 0 Geschrieben 12. Mai 2020 Autor Melden Teilen Geschrieben 12. Mai 2020 Ich muss wissen wann ungefähr der Auftrag lief... und ja die Auftragsnummer(OrderNumber) ist wichtig... ich will wissen wieviele zu dem Auftrag Passed und Failed usw. sind.. Zitieren Link zu diesem Kommentar
MDD 12 Geschrieben 12. Mai 2020 Melden Teilen Geschrieben 12. Mai 2020 Dann eben ergänzen SELECT MIN(Start_Date_Time), [Order Number] [Article Number], [Article Description}, sum(case UUT_State) when 'Passed' then 1 else 0 end)as Passed, sum(case UUT_State) when 'Failed' then 1 else 0 end) as Failed, sum(case UUT_State) when 'Error' then 1 else 0 end) as Error from [BBL_Result].[dbo].[UUT_RESULT] Where Station_ID = 'IPCCHFRA0190' Group by [Order Number], [Article Number], [Article Description] Zitieren Link zu diesem Kommentar
tiger88 0 Geschrieben 12. Mai 2020 Autor Melden Teilen Geschrieben 12. Mai 2020 (bearbeitet) Sieht schon mal sehr gut aus. Vielen Dank erstmal!!! Hat aber noch einen Fehler.. :( Ich bekomme nun folgendes Bild (club.png). Wenn ich mir den Auftrag nun genauer anschaue, sieht man das die Serialnummern wie oben beschrieben öfter getestet wurden. (club2.png) Ich möchte nur die wirklich letzten Resultate bewerten! D.h. Das Ergebniss müsste so aussehen: 8 passed, 1 failed, 1 error. Wenn du das noch schaffst bist du mein persönlicher Held :) bearbeitet 12. Mai 2020 von tiger88 Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 12. Mai 2020 Melden Teilen Geschrieben 12. Mai 2020 Wie kommst du auf 1 failed, ein error? Wenn man die Stati in dem letzten Screenshot zusammenzählt passt das Ergebnis doch. Zitieren Link zu diesem Kommentar
tiger88 0 Geschrieben 12. Mai 2020 Autor Melden Teilen Geschrieben 12. Mai 2020 Duplikate entfernen Serialnummern wurden mehrfach getestet. mich interessiert der letzte datensatz (letzte datum) von einer uut Habs geschafft: SELECT Min(a.Start_Date_Time) as TestDate, a.OrderNumber, a.ArticleNumber, a.ArticleDescription, sum(case UUT_Status when 'Passed' then 1 else 0 end) as Passed, sum(case UUT_Status when 'Failed' then 1 else 0 end) as Failed, sum(case UUT_Status when 'Error' then 1 else 0 end) as Error FROM [BBL_Result].[dbo].[UUT_RESULT] AS a INNER JOIN (SELECT [UUT_SERIAL_NUMBER], MAX([START_DATE_TIME]) AS MAX_DATE_TIME FROM [BBL_Result].[dbo].[UUT_RESULT] WHERE Station_ID = 'IPCCHFRA0190' AND OrderNumber <> '' GROUP BY UUT_SERIAL_NUMBER ) AS b ON a.UUT_SERIAL_NUMBER = b.UUT_SERIAL_NUMBER and a.START_DATE_TIME = b.MAX_DATE_TIME Group by OrderNumber, ArticleNumber, ArticleDescription Order By TestDate DESC Zitieren Link zu diesem Kommentar
MDD 12 Geschrieben 12. Mai 2020 Melden Teilen Geschrieben 12. Mai 2020 okaaay, Das konnte ich aus deiner Beschreibung vorhin noch nicht erkennen. Aber schön das du es lösen konntest. Zitieren Link zu diesem Kommentar
tiger88 0 Geschrieben 12. Mai 2020 Autor Melden Teilen Geschrieben 12. Mai 2020 Es funktioniert noch nicht bei jedem Datensatz.. :( Zitieren Link zu diesem Kommentar
MDD 12 Geschrieben 12. Mai 2020 Melden Teilen Geschrieben 12. Mai 2020 Reine Vermutung, aber ich befürchte dass dein Join-Kriterium nicht ausreicht und dir gelegentlich mehr Treffer als erwartet zurückbringt. Kann mir vorstellen das entweder die OrderNumber oder die Artikelnummer oder gar beides notwendig sind. 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.