tiger88 0 Posted October 22, 2020 Report Posted October 22, 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. Quote
MDD 13 Posted October 22, 2020 Report Posted October 22, 2020 (edited) 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 Edited October 22, 2020 by MDD Quote
MDD 13 Posted October 22, 2020 Report Posted October 22, 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" Quote
tiger88 0 Posted October 22, 2020 Author Report Posted October 22, 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... Quote
MDD 13 Posted October 22, 2020 Report Posted October 22, 2020 (edited) 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? Edited October 22, 2020 by MDD Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.