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
Post a Comment