sql - How to group by ID as well as date with this query -


this followup question posted earlier. code asking realized upon getting working trying isn't quite need.

declare @startdatetime datetime = '2015-07-13 14:00:00',         @enddatetime datetime = '2015-07-13 16:00:00';  jumpsof15 (     select row_number() over(order object_id) * 15 step     sys.objects ), dates ( select currentdate = steppeddate.steppeddate jumpsof15 cross apply(select dateadd(minute,step,@startdatetime) steppeddate ) steppeddate @enddatetime>steppeddate.steppeddate  )  select  d.currentdate, t.value, t.fk_configid    dates d         outer apply         (   select  top 1 t.[timestamp], t.value, t.fk_configid                mytable t               t.[timestamp] <= d.currentdate , t.fk_configid in (208812, 208809, 208815)             order t.[timestamp] desc, t.value, t.fk_configid         ) t 

this gives output so:

currentdate          value           fk_configid 1/1/2015 12:15       2               208809 1/1/2015 12:30       5               208815 1/1/2015 12:45       1               208815 

but need have 1 record per timestamp per unique fk_configid specify in list. right getting 1 record per timestamp regardless of config id. output want:

currentdate          value           fk_configid 1/1/2015 12:15       2               208809 1/1/2015 12:15       4               208815 1/1/2015 12:30       5               208809 1/1/2015 12:30       1               208815 

how achieve this?

try , tell me think:

declare @startdatetime datetime = '2015-07-13 14:00:00',         @enddatetime datetime = '2015-07-13 16:00:00';  jumpsof15 (    select step = row_number() on (order (select 1)) * 15    sys.objects ), dates (    select currentdate = dateadd(minute, step, @startdatetime)    jumpsof15    step < datediff(minute, 0, @enddatetime - @startdatetime) ) select    d.currentdate,    t.configid,    t.value    dates d    cross join (values       (208812), (208809), (208815)    ) c (configid)    outer apply (       select top 1           t.[timestamp],           t.value,           t.fk_configid       mytable t                d.currentdate >= t.[timestamp]          , c.configid = t.fk_configid       order          t.[timestamp] desc,          t.value    ) t ; 

Comments