Удалить строки с перекрывающимся временем - PullRequest
1 голос
/ 19 сентября 2011

Я пытаюсь удалить некоторую конфликтующую дату, связанную со временем, это таблица времени начала и окончания, и я хочу написать запрос для удаления перекрывающихся данных, в этом случае я хотел бы удалить 13:00 row и 13:30 row (строки 6/7), потому что эти времена уже покрыты строкой от 12:00 до 14:00 (строки 3/4).Все строки, где VALUE_ENUM равны 1, являются временами начала, а все строки, где VALUE_ENUM равны 0, являются временами остановки.

Вот пример того, как выглядят данные в моей таблице:

SITE_ID ------- DEV_ID ------- SCHEDULE_TIME ------- VALUE_ENUM
---------------------------------------------------------------
1               3000           09:30:00              1
1               3000           11:30:00              0
1               3000           12:00:00              1
1               3000           14:00:00              0
1               3000           13:00:00              1
1               3000           13:30:00              0
1               3000           16:30:00              1
1               3000           18:30:00              0

Ответы [ 2 ]

0 голосов
/ 20 сентября 2011

Спасибо за помощь, но я смог решить ответ, установив предыдущие времена для конкретных систем в качестве временных переменных, а затем провел сравнение со следующими разами, чтобы увидеть, попадают ли они между временными временами, и если они это сделали, я только что полностью пропустил вставку, еще раз спасибо за вклад и предложения.

0 голосов
/ 19 сентября 2011

Кажется, вы хотите удалить строку, когда ее schedule_time меньше, чем предыдущая строка.Но как сделать порядок строк?Есть еще один столбец?В противном случае, после удаления следующая вставка, скорее всего, будет в этой позиции, и в следующий раз вы в конечном итоге ошибочно удалите много строк.

Не уверен, как это можно сделать в одном операторе sql, но процедурныйалгоритм прост - инициализируйте last_schedule_time нулевым значением, а затем сравнивайте каждую строку;удалить, если меньше, или присвоить last_schedule_time текущему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...