Jump to content

MSSQL Querry


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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.

 

Link zu diesem Kommentar

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 von MDD
Link zu diesem Kommentar
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...

Link zu diesem Kommentar
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 von MDD
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...