Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Как сделать хитрый запрос? / 18 сообщений из 18, страница 1 из 1
13.11.2009, 09:50
    #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
13.11.2009, 10:55
    #36308544
Шурыгин Иван Сергеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать хитрый запрос?
DmitriyZ,

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

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

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

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

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

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

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

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

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

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


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