powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Как сделать хитрый запрос?
18 сообщений из 18, страница 1 из 1
Как сделать хитрый запрос?
    #36308343
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица вида (это таб. часть документа, не регистр):

Значение Состояние ДатаСостояния
Значение1 Истина 01.01.2009
Значение1 Истина 02.01.2009
Значение1 Ложь 03.01.2009
Значение1 Истина 04.01.2009

Можно ли как то запросом получить таблицу следующего вида:

Значение Состояние ДатаСостоянияНач ДатаСостоянияКон
Значение1 Истина 01.01.2009 02.01.2009
Значение1 Ложь 03.01.2009 03.01.2009
Значение1 Истина 04.01.2009
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36308544
Шурыгин Иван Сергеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyZ,

я правильно понял, вы хотите получить таблицу вида
<Значение> <Состояние> <ДатаСостояния> <ДатаСостояния + 1 день>
?????
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36308582
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, я хочу получить таблицу с периодами каждого состояния, отсортированную по дате начала каждого интервала. Просто у меня в примере так. Таблица может быть заполнена совершенно произвольным образом. Т.е. с 1 по 5 истина, затем с 6 по 10 ложь, затем с 11 по 13 опять истина и т.д.
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36308752
Baumanez103
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я правильно понял вопрос, то как-то так

Кажется так
Выбрать
Т1. Значение,
Т1.Состояние,
Т1.ДатаСостояния КАК Начало
естьNull(Т2.ДатаСостояния, Т1.ДатаСостояния)
Из ТЧ КАК Т1,
Левое соединение ТЧ КАК Т2
По Т1.Значение = Т2.Значение
И Т1.Состояние = Т2.Состояние
И Т1.ДатаСостояния <> Т2.ДатаСостояния

НО!!
Вы должны быть уверены, что в вашей табличной части может быть не больше двух строк с одинаковыми значениями и состояниями
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36308768
Baumanez103
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не все учел. Нужно с помощью конструкции "Выбор..." понять какая дата - начало, а какая - конец
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36308894
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению, не подходит. Строк может быть болше, чем 2.
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36308900
Baumanez103
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е дат может быть например 3, и нужно выбрать только самую раннюю (начальная) и самую позднюю (конечная)?
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36308918
Baumanez103
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если Так, то вот:

Выбрать
Ранние.Значение,
Ранние.Состояние,
Ранние.Начало,
Поздние.Конец
из

(Выбрать
Т1.Значение,
Т1.Состояние,
Минимум(Т1.ДатаСостояния) как Начало
Из ТЧ КАК Т1
Сгруппирвоать по Т1.Значение, Т1.Состояние) КАК Ранние
Внутреннее Соединение
(Выбрать
Т1.Значение,
Т1.Состояние,
Максимум(Т1.ДатаСостояния) как Конец
Из ТЧ КАК Т1
Сгруппирвоать по Т1.Значение, Т1.Состояние) КАК Поздние
По Ранние.Значение = Поздние.Значение и
Ранние.Состояние = Поздние.Состояние
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36308926
Baumanez103
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если Так, то вот:

Выбрать
Ранние.Значение,
Ранние.Состояние,
Ранние.Начало,
Поздние.Конец
из

(Выбрать
Т1.Значение,
Т1.Состояние,
Минимум(Т1.ДатаСостояния) как Начало
Из ТЧ КАК Т1
Сгруппирвоать по Т1.Значение, Т1.Состояние) КАК Ранние
Внутреннее Соединение
(Выбрать
Т1.Значение,
Т1.Состояние,
Максимум(Т1.ДатаСостояния) как Конец
Из ТЧ КАК Т1
Сгруппирвоать по Т1.Значение, Т1.Состояние) КАК Поздние
По Ранние.Значение = Поздние.Значение и
Ранние.Состояние = Поздние.Состояние
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36309008
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все равно немного не то. Надо получить таблицу вида

Значение Истина с 01.01.2009 по 10.01.2009
Значение Ложь с 11.01.2009 по 15.01.2009
Значение Истина с 16.01.2009 по 20.01.2009
и т.д.

Чтобы было понятнее - это что то вроде табеля рабочего времени где Значение - сотрудник, состояние явка, дата - календарная дата.
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36309041
Baumanez103
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По-моему это запросом одним нельзя получить. Нужно обрабатывать полученную таблицу значений
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36309053
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за помощь, я тоже склоняюсь к такому же выводу.
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36309180
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или рекурсия
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36309226
Baumanez103
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По-моему это запросом одним нельзя получить. Нужно обрабатывать полученную таблицу значений
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36309228
Baumanez103
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По-моему это запросом одним нельзя получить. Нужно обрабатывать полученную таблицу значений
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36309494
Хитроглазый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baumanez103,

можно
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36309674
Хитроглазый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
даже тема почти также называется
...
Рейтинг: 0 / 0
Как сделать хитрый запрос?
    #36309931
Guest_1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Как сделать хитрый запрос?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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