SSMS
 sql >> Datenbank >  >> Database Tools >> SSMS

SQL-Abfrage Vergleichen Sie Werte in 15 Minuten und zeigen Sie das Ergebnis pro Stunde an

Unten ist die Abfrage, die Sie benötigen, und eine funktionierende Lösung Hinweis:Ich habe den Zeitrahmen auf 24 Stunden geändert

       ;with SourceData(HourTime, Value, RowNum)
  as
  (
    select 
      datepart(hh, UTCTime) HourTime, 
      Value, 
      row_number() over (partition by datepart(hh, UTCTime) order by UTCTime) RowNum
    from foo
    union 
    select 
        datepart(hh, UTCTime) - 1 HourTime, 
        Value,
        5
    from foo
    where datepart(mi, UTCTime) = 0
  )
  select cast(A.HourTime as varchar) + ':00' UTCTime, sum(case when A.Value = B.Value then 1 else 0 end) ConstantValues
  from SourceData A
   inner join SourceData B on A.HourTime = B.HourTime and
                           (B.RowNum = (A.RowNum - 1))
  group by cast(A.HourTime as varchar) + ':00'