Jump to content

tiger88

Members
  • Gesamte Inhalte

    8
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von tiger88

  1. 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...

  2. 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.

     

  3. 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

     

  4. 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 :)

     

     

     

  5.  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

    ...

     

     

     

×
×
  • Neu erstellen...