2016-09-26 3 views
0

Ниже есть множество образцов моих данных:Как просмотреть данные проверки и отобразить по горизонтали?

ID DATETIME  
1  29-12-2016 03:00 
2  28-12-2016 14:00 
3  28-12-2016 16:00 
4  25-12-2016 00:00 

Ожидаемый результат:

ID DATETIME    24HoursDataExisted 
1  29-12-2016 03:00  0 
2  28-12-2016 14:00  1 
3  28-12-2016 16:00  1 
4  25-12-2016 00:00  0 

Как написать такой запрос, в котором для каждой записи сказать, если есть еще одна запись существовала в течение следующих 24 часов ? Это как-то связано с DATEADD(hh, 24,datetime), но я не уверен, как записать его в SQL.
Из приведенных выше данных образца запись ID2 истинна из-за записи ID1 и ID3, а ID3 - истина из-за записи ID1.

ответ

0

, если вы используете 2012, вы можете использовать функцию свинца ..

select id,datetimee, 
case 
when datediff(hour,convert(datetime,datetimee,105),cast(lead(convert(datetime,datetimee,105)) 
over (order by convert(datetime,datetimee,105)) as datetime))<=24 
then 1 else 0 end 
from #temp 
order by id desc 

за 2008 год, вы можете использовать ниже

;with cte 
as 
(
select id,convert(datetime,datetimee,105) as dtval, 
row_number() over (order by id desc) as rownum 
from #temp 
) 
select c1.id,c1.dtval, 
case when datediff(hour,c1.dtval,c2.dtval)<=25 then 1 else 0 end as comecol 
from cte c1 
left join cte c2 
on c1.rownum+1=c2.rownum 

Выход:

id datetimee   somecol 
4 25-12-2016 00:00 0 
3 28-12-2016 16:00 1 
2 28-12-2016 14:00 1 
1 29-12-2016 15:00 0 
+0

Можете ли вы объяснить, где из 'datetimee'? – Twinkles

+0

Спасибо за ваш ответ, но приложение все еще работает на сервере SQL 2008 –

+0

@ Mr.SuicideSheep: см. Обновленный для 2008 – TheGameiswar

Смежные вопросы