Jump to content

MSSQL Querry


Recommended Posts

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 to post

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 by MDD
Link to post
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 to post
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 by MDD
Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...