SQL запрос
От: vvv848165@ya.ru  
Дата: 11.10.19 06:16
Оценка:
Можно ли узнать в каких строках изменяется значения (по порядку)?
а лучше последняя и первая строка нового значения
id значение
1 нет
2 да <-?
3 да
4 да <-?
5 нет
6 нет
7 да <-?
8 да
9 да
10 да
11 да <-?
12 нет

Group слепит всё в 2 группы — а это не нужно
Помогите хоть в какую сторону рыть?
Re: SQL запрос
От: fmiracle  
Дата: 11.10.19 07:35
Оценка: 3 (1)
Здравствуйте, vvv848165@ya.ru, Вы писали:

VYR>Можно ли узнать в каких строках изменяется значения (по порядку)?

VYR>а лучше последняя и первая строка нового значения
VYR>id значение
VYR>1 нет
VYR>2 да <-?
VYR>3 да
VYR>4 да <-?
VYR>5 нет

Если id — это число и оно точно-точно идет последовательно, то можно просто сделать join этой таблицы самой с собой по условию r.id = l.id + 1 ну и выбрать те строки где l.value <> r.value

Если же такое требование на id не выполняется, то можно пронумеровать через оконные функции и row_number() а дальше то же самое.
Re: SQL запрос
От: Mihas  
Дата: 11.10.19 08:10
Оценка: 3 (1)
Здравствуйте, vvv848165@ya.ru, Вы писали:

VYR>Помогите хоть в какую сторону рыть?

В подзапросы

SELECT Id, v FROM #t

SELECT * FROM (
    SELECT Id, v, v1 = (SELECT TOP 1 v FROM #t t2 WHERE t2.Id > t1.Id ORDER BY ID) 
    FROM #t t1 
) AS t3
WHERE t3.v <> t3.v1
Re[2]: SQL запрос
От: vvv848165@ya.ru  
Дата: 14.10.19 11:19
Оценка:
Здравствуйте, Mihas, Вы писали:

M>[sql]

M>SELECT Id, v FROM #t

а # что означает?
Re[3]: SQL запрос
От: _ABC_  
Дата: 14.10.19 11:24
Оценка: +1
Здравствуйте, vvv848165@ya.ru, Вы писали:

VYR>а # что означает?

Временная таблица в SQL Server.
Re: SQL запрос
От: vvv848165@ya.ru  
Дата: 14.10.19 11:58
Оценка:
Как то я начал переправлять таблицы и понял что что-то скорее всего делаю не то
причём стандартных правил для построения таблиц не хватает (КАКОЙ ТО ЖУТКИЙ СЛУЧАЙ)

Задача в кратце такая:
серверу шлют постоянно сообщения с определённым id объекта и временем есть ли пожар или нет (они должны логироваться)
если пожар то их обрабатывают и надо сохранить когда и кто взял на обработку и завершили обрабатывать
думал как -то-так:


[опросы] (таблица логов/опросов)
id_опроса
id_объекта
время
пожар (bool при пожаре true)


[принято_в_обработку] (таблица взятия для обработки)
?id_обработки (??? если добавить то с таблицей "обработано" вроде лучше)
id_объекта
время
id_оператора (который взял обрабатывать пожар)
?id_опроса (??? может добавить id первого опроса с пожаром но его можно вычислить)


[обработано] (таблица совершенных обработок)
id_объекта (??? если будет id_обработки то лишнее)
время
id_оператора (который взял обрабатывать пожар)
результат
?id_обработки (??? может добавить)


А потом я подумал — может завести ещё таблицу "первое срабатывание" — тогда будет почти всё связно

??? Самый важный вопрос последний — то-есть если есть таблица [опросы] — нужно ли заводить ещё таблицу "первое срабатывание" (она же будет дублировать информацию)
Re[2]: SQL запрос
От: Mihas  
Дата: 14.10.19 12:03
Оценка: :)
Здравствуйте, vvv848165@ya.ru, Вы писали:

VYR>серверу шлют постоянно сообщения с определённым id объекта и временем есть ли пожар или нет (они должны логироваться)

VYR>если пожар то их обрабатывают и надо сохранить когда и кто взял на обработку и завершили обрабатывать
Надеюсь, пока задача не решена, наблюдателя с пожарной каланчи не сняли?
(шутко )
Re[2]: SQL запрос
От: vvv848165@ya.ru  
Дата: 14.10.19 13:15
Оценка:
Здравствуйте, vvv848165@ya.ru, Вы писали:

VYR>Как то я начал переправлять таблицы и понял что что-то скорее всего делаю не то

VYR>причём стандартных правил для построения таблиц не хватает (КАКОЙ ТО ЖУТКИЙ СЛУЧАЙ)

https://www.youtube.com/watch?v=lIOdu3gqxd0

Всё-таки понял — на деле чтобы база не зависала жертвуют даже Нормализацией !!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.