2017-06-11 4 views
1

[Datum Zeit] und [MFR g/10min] sind Felder aus der Tabelle [In Prozessanalyse-Ergebnis]. Ich soll den "Bereich (Max-Min) von [MFR g/10min] pro Tag" und "Durchschnittlich von [MFR g/10min]" finden. Ein Tag wird als "Vorheriger Tag" 18:00:00 bis "Heute" 17:59:00 definiert.MS Access SQL-Bereich und Durchschnitt

SELECT [In process analysis result].[Date Time], Format([In process analysis result].[Date Time],"dd/mmm/yy") AS [Extracted Date], Format([In process analysis result].[Date Time],"hh:nn:ss") AS [Extracted Time], IIf([Extracted Time]<"18:00:00",DateAdd("d",-1,[Extracted Date]),[Extracted Date]) AS [New Date], [In process analysis result].[MFR g/10min] 
FROM [In process analysis result]; 

Ich extrahierte die [Extracted Date] und [Extracted Time]. Basierend auf der Bedingung, dass, wenn [Extraktionszeit] weniger als 18:00:00 ist, dies als der vorherige Tag angesehen wird. Das Endergebnis ist [Neues Datum].

Aber von dieser Abfrage weiß ich nicht, wie ich die "Reichweite (Max-Min) von [MFR g/10min] pro Tag" und "Durchschnitt von [MFR g/10min]" gruppiert nach [ Neues Datum]. Ich brauche Hilfe und Anleitung. Schätze, wenn mir jemand helfen könnte. Danke.

enter image description here

Antwort

1

Sie sind auf dem richtigen Weg, aber man kann, indem man DateValue([Date Time]) und Zugabe von 1 Tag, um Ihre Datumsberechnung vereinfachen, wenn Hour([Date Time]) 18 oder größer ist. Verwenden Sie dann diese Abfrage als Unterabfrage in der Abfrage, die die tatsächlichen Berechnungen ausführt:

SELECT 
    EffectiveDate, 
    MAX([MFR g/10min]) - MIN([MFR g/10min]) AS DailyRange, 
    AVG([MFR g/10min]) AS DailyAverage 
FROM 
    (
     SELECT 
      DateAdd("d", IIf(Hour([Date Time]) < 18, 0, 1), DateValue([Date Time])) AS EffectiveDate, 
      [MFR g/10min] 
     FROM [In process analysis result] 
    ) 
GROUP BY EffectiveDate