powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / выбрать время диапазона
8 сообщений из 8, страница 1 из 1
выбрать время диапазона
    #32027016
fliper_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MS SQL 70:
В таблице лежит поле с идентефикатором(1 или 0), включился или выключилсяполе с временем записи события. Т. е. агрегат влючился(1) в 12:45. Потом запись выключился(0) в 13:05. Нужно выбрать время работы агрегата
...
Рейтинг: 0 / 0
выбрать время диапазона
    #32027030
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А первичный ключ есть ?
...
Рейтинг: 0 / 0
выбрать время диапазона
    #32027031
fliper_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а первичного ключа нету.
...
Рейтинг: 0 / 0
выбрать время диапазона
    #32027055
_Dima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже, что кроме использования FETCH, другого пути не остается.
...
Рейтинг: 0 / 0
выбрать время диапазона
    #32027057
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если _предположить_ что занесение данных идет логически правильно, т.е. за включением всегда следует выключение, то что-то подобное



create table #temp(status int, act_time datetime)

insert #temp values(1, '19000101 12:00:00')
insert #temp values(0, '19000101 12:15:00')
insert #temp values(1, '19000101 12:16:00')
insert #temp values(0, '19000101 12:20:00')
insert #temp values(1, '19000101 12:40:00')

select sw_on, sw_on_time, sw_off, sw_off_time from
(select a.status as sw_on, a.act_time as sw_on_time, min(b.status) as sw_off, min(ISNULL(b.act_time, GETDATE())) as sw_off_time
from #temp a
left outer join #temp b on b.status <> a.status and b.act_time > a.act_time
group by a.status, a.act_time
) AS a

drop table #temp
...
Рейтинг: 0 / 0
выбрать время диапазона
    #32027059
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эх молодежь, всё бы им циклы подавай...
а если подумать?

declare @t table(state int, time datetime)

insert @t select 1, '20020405 10:00'
insert @t select 0, '20020405 11:00' -- +1
insert @t select 1, '20020405 12:00'
insert @t select 0, '20020405 13:00' -- +1
insert @t select 1, '20020405 14:00'


declare @d datetime
select @d='20020405 15:00' -- +1

select sum((datediff(mi,time,@d))*(state*2-1)) from @t


это будет время в минутах к моменту времени @d
...
Рейтинг: 0 / 0
выбрать время диапазона
    #32027064
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Список времени работы:
Create table #mytable(EventDate datetime, OnOff bit)

select (select min(t2.EventDate) from #mytable t2 where t2.EventDate > t1.EventDate)-t1.EventDate as ALLTIME
from #mytable t1
where t1.OnOff = 1
...
Рейтинг: 0 / 0
выбрать время диапазона
    #32027065
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой, ошибся. Ну всё равно уже ответили...
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / выбрать время диапазона
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]