2016-04-15 1 views
0

Ich habe diese Struktur der Daten:SQL max Gruppe zwischen Zeiten mit SSRS

Date    |Data1 |Data2|Data3 
04/01/2016 01:00 |5  |4 |3  
04/01/2016 03:00 |1  |12 |31  
04/01/2016 05:00 |7  |6 |2 
04/01/2016 19:00 |4  |32 |23 
04/01/2016 21:00 |11 |24 |33 
04/01/2016 23:00 |8  |52 |7 
04/02/2016 02:00 |18 |62 |2 
04/02/2016 04:00 |4  |5 |75 

ich SSRS bin mit dem Maximum von jeder Daten zwischen 07.00 zeigen - 19.00 und 19.00 bis 7 : 00 Uhr am nächsten Tag. Ich begann mit der Erstellung von zwei gespeicherten Prozeduren, eines für die Verarbeitung der AM-Daten und eines für die Verarbeitung der PM-Daten. Das ist großartig, außer dass ich eine Reihe von Daten weitergeben muss und die AM und PM an diesen Daten gruppieren muss. Ich habe etwas gegraben, meine einzigen Lösungen sind meine AM/PM-Abfragen, so dass sie in 1 Abfrage sind oder irgendwie meinen 2 gespeicherten Prozeduren in SSRS beitreten. Irgendwelche Ideen, wie ich das erreichen kann?

+0

Gibt es einen Unterschied zwischen normalem SQL und SSRS? weil das sehr einfach aussieht. –

Antwort

1

Warum machen Sie das nicht in einer Abfrage und geben es in Ihrem Bericht aus? Passen Sie die CASE Anweisung für Ihre AM/PM-Gruppierungen an.

WITH AmPmData AS 
(
    SELECT 
     Date 
    , CASE 
      WHEN DATEPART(HOUR, Date) < 7 
       THEN DATEADD(DAY, -1, CAST(Date AS DATE)) 
      ELSE CAST(Date AS DATE) 
     END AS ReportingDate 
    , CASE 
      WHEN DATEPART(HOUR, Date) < 7 
       THEN 'PM' 
      WHEN DATEPART(HOUR, Date) >= 19 
       THEN 'PM' 
      ELSE 'AM' 
     END AS AmPm 
    , Data1 
    , Data2 
    , Data3 

    FROM 
     SomeTable 

    WHERE 
     Date >= @StartDate 
     AND Date < DATEADD(DAY, 1, @EndDate) 
) 

SELECT 
    ReportingDate 
, AmPm 
, MAX(Data1) AS MaxData1 
, MAX(Data2) AS MaxData2 
, MAX(Data3) AS MaxData3 

FROM 
    AmPmData 

GROUP BY 
    ReportingDate 
, AmPm 
+0

Ich denke, dass Sie eine Korrektur benötigen ... weil Ihre 'Gruppe durch' den '7pm-7am' Bereich in' DAYpm' und 'DAY + 1pm' getrennt generiert –

+0

Richtig, ich habe die Antwort aktualisiert. Ich habe es nicht getestet, aber die Idee ist da. – mheptinstall

+0

Jetzt besser aussehen. –