Извиняюсь за ужасный заголовок, не совсем уверен, как объяснить это без образца:
Я пытаюсь вернуть столбец в запросе, чередующийся от 0 до 1 в качестве часа столбца datetimeнад результирующим набором изменений. У кого-нибудь есть предложения о том, как это сделать?ИЛИ как это можно сделать с помощью CTE
Я начал изучать использование CTE, но не очень далеко продвинулся и надеюсь, что есть более простой способ.Ниже приведен очень простой пример того, чего я надеюсь достичь, с текущим выходом и желаемым выходом.Обратите внимание, что я создал столбец [band], который делает то, что я хочу, при условии, что время в один и тот же день.Конечно, он прерывается, когда даты охватывают более одного дня.
declare @test as table(id int, dt datetime, comment varchar(50))
insert into @test values(1, '2011-01-01 07:00', 'one')
insert into @test values(2, '2011-01-01 07:30', 'two')
insert into @test values(3, '2011-01-02 07:50', 'three')
insert into @test values(4, '2011-01-03 08:00', 'four')
insert into @test values(5, '2011-01-03 08:50', 'five')
insert into @test values(6, '2011-01-03 09:00', 'six')
insert into @test values(7, '2011-01-03 10:00', 'seven');
select *, DATEPART(HOUR, dt) % 2 as [band]
from @test
ТЕКУЩИЙ ВЫХОД
1 2011-01-01 07:00:00.000 one 1
2 2011-01-01 07:30:00.000 two 1
3 2011-01-02 07:50:00.000 three 1
4 2011-01-03 08:00:00.000 four 0
5 2011-01-03 08:50:00.000 five 0
6 2011-01-03 09:00:00.000 six 1
7 2011-01-03 10:00:00.000 seven 0
НЕОБХОДИМЫЙ ВЫХОД
1 2011-01-01 07:00:00.000 one 1
2 2011-01-01 07:30:00.000 two 1
3 2011-01-02 07:50:00.000 three 0
4 2011-01-03 08:00:00.000 four 1
5 2011-01-03 08:50:00.000 five 1
6 2011-01-03 09:00:00.000 six 0
7 2011-01-03 10:00:00.000 seven 1
Обратите внимание, что я хочу, чтобы столбец [band] чередовался, когда дата и время в строках меняются на новые часы.Будь то следующий час в тот же день или другой час следующего дня.