tiger88 0 Geschrieben 22. Oktober 2020 Melden Teilen Geschrieben 22. Oktober 2020 Hallo Zusammen Mein Querry sieht folgendermaßen aus: Declare @CurrentDate DateTime Declare @PrevMonthDate DateTime Set @CurrentDate=Dateadd(dd,datediff(d,0,getdate()),0) Set @PrevMonthDate=dateadd(month,-1,@CurrentDate) SELECT DISTINCT dbo.OrdData.DateMade, dbo.OrdData.OrdNr, dbo.ProgData.ArtCode, dbo.ProgData.ArtBez, dbo.TestData.SensorNr, max(dbo.TestData.ExeCode), dbo.ProgData.Version, dbo.TestSeqInfo.MBNr FROM dbo.TestData INNER JOIN dbo.OrdData ON dbo.TestData.OrdNr = dbo.OrdData.OrdNr INNER JOIN dbo.ProgData ON dbo.OrdData.ArtKey = dbo.ProgData.ArtKey INNER JOIN dbo.TestSerieData ON (dbo.TestData.OrdNr = dbo.TestSerieData.OrdNr AND dbo.TestData.SerieModeName = dbo.TestSerieData.SerieModeName AND dbo.TestData.SerieCode1 = dbo.TestSerieData.SerieCode1 AND dbo.TestData.SerieCode2 = dbo.TestSerieData.SerieCode2 ) INNER JOIN dbo.TestSeqInfo ON (dbo.TestData.OrdNr = dbo.TestSeqInfo.OrdNr AND dbo.TestData.SensorNr = dbo.TestSeqInfo.SensorNr AND dbo.TestSerieData.TestSerieKey = dbo.TestSeqInfo.TestSerieKey) WHERE dbo.TestSeqInfo.MBNr = '710111' and dbo.OrdData.DateMade > @PrevMonthDate Group by dbo.OrdData.DateMade, dbo.OrdData.OrdNr, dbo.ProgData.ArtCode, dbo.ProgData.ArtBez, dbo.TestData.SensorNr, dbo.ProgData.Version, dbo.TestSeqInfo.MBNr Order by dbo.OrdData.DateMade DESC Wie man auf dem Bild erkennt bekomme ich foglendes Ergebnis: TestDatum, Auftragsnummer, Artikelcode, Artikelbezeichnung, SensorNr, Status, ProgrammVersion, MBNr Da ich in der SELECT Abfrage Max(TestData.ExeCode) verwende bekomme ich direkt pro Sensor das Ergebniss ob der Sensor passed = 0 oder failed != 0 getestet wurde. Nun möchte ich die Abfrage erweitern das ich pro Auftrag eine Spalte mit Passed und Failed habe. TestDatum, Auftragsnummer, ArtCode, ArtDescr, Passed, Failed, Version, MBNr 22.10.2020, 102603794, 10234807, FZAM 12P11..., 20, 2, 1 710111 Wie kann ich das mit der Count Abfrage realisieren? Muss ich eine zweite SELECT Abfrage einfügen? Ich hoffe ihr könnt mir mit einem Beispiel helfen. :( Vielen Dank. Zitieren Link zu diesem Kommentar
MDD 12 Geschrieben 22. Oktober 2020 Melden Teilen Geschrieben 22. Oktober 2020 (bearbeitet) Hallo Wie ich dein Beispiel gesehen habe ist mir das irgendwie bekannt vorgekommen. Achja, du hast schon mal eine sehr ähnliche Aufgabe hier vorgebracht. Vom Prinzip hier ist die Vorgangsweise die selbe wie damals. Declare @CurrentDate DateTime Declare @PrevMonthDate DateTime Set @CurrentDate=Dateadd(dd,datediff(d,0,getdate()),0) Set @PrevMonthDate=dateadd(month,-1,@CurrentDate) SELECT DISTINCT cast(dbo.OrdData.DateMade as Date) TestDatum, dbo.OrdData.OrdNr, dbo.ProgData.ArtCode, dbo.ProgData.ArtBez, dbo.TestData.SensorNr, sum (case TestData.ExeCode when 0 then 0 else 1 end ) as Passed, sum (case TestData.ExeCode when 0 then 1 else 0 end ) as Failed, dbo.ProgData.Version, dbo.TestSeqInfo.MBNr FROM dbo.TestData INNER JOIN dbo.OrdData ON dbo.TestData.OrdNr = dbo.OrdData.OrdNr INNER JOIN dbo.ProgData ON dbo.OrdData.ArtKey = dbo.ProgData.ArtKey INNER JOIN dbo.TestSerieData ON (dbo.TestData.OrdNr = dbo.TestSerieData.OrdNr AND dbo.TestData.SerieModeName = dbo.TestSerieData.SerieModeName AND dbo.TestData.SerieCode1 = dbo.TestSerieData.SerieCode1 AND dbo.TestData.SerieCode2 = dbo.TestSerieData.SerieCode2 ) INNER JOIN dbo.TestSeqInfo ON (dbo.TestData.OrdNr = dbo.TestSeqInfo.OrdNr AND dbo.TestData.SensorNr = dbo.TestSeqInfo.SensorNr AND dbo.TestSerieData.TestSerieKey = dbo.TestSeqInfo.TestSerieKey) WHERE dbo.TestSeqInfo.MBNr = '710111' and dbo.OrdData.DateMade > @PrevMonthDate Group by cast(dbo.OrdData.DateMade as Date), dbo.OrdData.OrdNr, dbo.ProgData.ArtCode, dbo.ProgData.ArtBez, dbo.ProgData.Version, dbo.TestSeqInfo.MBNr Order by 1 DESC Versuchs damit. Ich hoffe ich habe nichts übersehen bearbeitet 22. Oktober 2020 von MDD Zitieren Link zu diesem Kommentar
MDD 12 Geschrieben 22. Oktober 2020 Melden Teilen Geschrieben 22. Oktober 2020 Was sich mir aber noch ganz und gar nicht erschließt ist das: Zitat Set @CurrentDate=Dateadd(dd,datediff(d,0,getdate()),0) Das ist so "von hinten rum durch die Brust ins Auge" Zitieren Link zu diesem Kommentar
tiger88 0 Geschrieben 22. Oktober 2020 Autor Melden Teilen Geschrieben 22. Oktober 2020 vor einer Stunde schrieb MDD: Hallo Wie ich dein Beispiel gesehen habe ist mir das irgendwie bekannt vorgekommen. Achja, du hast schon mal eine sehr ähnliche Aufgabe hier vorgebracht. Vom Prinzip hier ist die Vorgangsweise die selbe wie damals. Declare @CurrentDate DateTime Declare @PrevMonthDate DateTime Set @CurrentDate=Dateadd(dd,datediff(d,0,getdate()),0) Set @PrevMonthDate=dateadd(month,-1,@CurrentDate) SELECT DISTINCT cast(dbo.OrdData.DateMade as Date) TestDatum, dbo.OrdData.OrdNr, dbo.ProgData.ArtCode, dbo.ProgData.ArtBez, dbo.TestData.SensorNr, sum (case TestData.ExeCode when 0 then 0 else 1 end ) as Passed, sum (case TestData.ExeCode when 0 then 1 else 0 end ) as Failed, dbo.ProgData.Version, dbo.TestSeqInfo.MBNr FROM dbo.TestData INNER JOIN dbo.OrdData ON dbo.TestData.OrdNr = dbo.OrdData.OrdNr INNER JOIN dbo.ProgData ON dbo.OrdData.ArtKey = dbo.ProgData.ArtKey INNER JOIN dbo.TestSerieData ON (dbo.TestData.OrdNr = dbo.TestSerieData.OrdNr AND dbo.TestData.SerieModeName = dbo.TestSerieData.SerieModeName AND dbo.TestData.SerieCode1 = dbo.TestSerieData.SerieCode1 AND dbo.TestData.SerieCode2 = dbo.TestSerieData.SerieCode2 ) INNER JOIN dbo.TestSeqInfo ON (dbo.TestData.OrdNr = dbo.TestSeqInfo.OrdNr AND dbo.TestData.SensorNr = dbo.TestSeqInfo.SensorNr AND dbo.TestSerieData.TestSerieKey = dbo.TestSeqInfo.TestSerieKey) WHERE dbo.TestSeqInfo.MBNr = '710111' and dbo.OrdData.DateMade > @PrevMonthDate Group by cast(dbo.OrdData.DateMade as Date), dbo.OrdData.OrdNr, dbo.ProgData.ArtCode, dbo.ProgData.ArtBez, dbo.ProgData.Version, dbo.TestSeqInfo.MBNr Order by 1 DESC Versuchs damit. Ich hoffe ich habe nichts übersehen Das wird so nicht funktionieren, Primär: 1. Max(TestData.ExeCode) habe ich mit Absicht verwendet um nur ein Resultat pro SensorNr zu bekommen. Sonst bekomme ich alle Testschritte pro SensorNr. Das ist je nach Typ des Sensors Variabel.. desswegen max(ExeCode) liefert ein eindeutiges ergebniss entweder 0 für passed oder >0 für failed. Sekundär: 2. Die SensorNr Spalte benötige ich nicht die hast du wars***einlich ausversehen noch drin gelassen. 3. Order By sollte nach Datum absteigend sein. vor einer Stunde schrieb MDD: am besten wir skypen .. dann kann man das live besser sehen... Zitieren Link zu diesem Kommentar
MDD 12 Geschrieben 22. Oktober 2020 Melden Teilen Geschrieben 22. Oktober 2020 (bearbeitet) vor 4 Stunden schrieb tiger88: TestDatum, Auftragsnummer, ArtCode, ArtDescr, Passed, Failed, Version, MBNr 22.10.2020, 102603794, 10234807, FZAM 12P11..., 20, 2, 1 710111 Du hast geschrieben, dass dies das Ergebnis sein soll. Da ist kein ExeCode drinnen. Welche Information soll in deren Spalten passed und failed ersichtlich sein? bearbeitet 22. Oktober 2020 von MDD 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.