|
|
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
Есть таблица вида (это таб. часть документа, не регистр): Значение Состояние ДатаСостояния Значение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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 09:50 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
DmitriyZ, я правильно понял, вы хотите получить таблицу вида <Значение> <Состояние> <ДатаСостояния> <ДатаСостояния + 1 день> ????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 10:55 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
Нет, я хочу получить таблицу с периодами каждого состояния, отсортированную по дате начала каждого интервала. Просто у меня в примере так. Таблица может быть заполнена совершенно произвольным образом. Т.е. с 1 по 5 истина, затем с 6 по 10 ложь, затем с 11 по 13 опять истина и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 11:03 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
Если я правильно понял вопрос, то как-то так Кажется так Выбрать Т1. Значение, Т1.Состояние, Т1.ДатаСостояния КАК Начало естьNull(Т2.ДатаСостояния, Т1.ДатаСостояния) Из ТЧ КАК Т1, Левое соединение ТЧ КАК Т2 По Т1.Значение = Т2.Значение И Т1.Состояние = Т2.Состояние И Т1.ДатаСостояния <> Т2.ДатаСостояния НО!! Вы должны быть уверены, что в вашей табличной части может быть не больше двух строк с одинаковыми значениями и состояниями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 11:45 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
Не все учел. Нужно с помощью конструкции "Выбор..." понять какая дата - начало, а какая - конец ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 11:48 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
К сожалению, не подходит. Строк может быть болше, чем 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 12:18 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
Т.е дат может быть например 3, и нужно выбрать только самую раннюю (начальная) и самую позднюю (конечная)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 12:20 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
Если Так, то вот: Выбрать Ранние.Значение, Ранние.Состояние, Ранние.Начало, Поздние.Конец из (Выбрать Т1.Значение, Т1.Состояние, Минимум(Т1.ДатаСостояния) как Начало Из ТЧ КАК Т1 Сгруппирвоать по Т1.Значение, Т1.Состояние) КАК Ранние Внутреннее Соединение (Выбрать Т1.Значение, Т1.Состояние, Максимум(Т1.ДатаСостояния) как Конец Из ТЧ КАК Т1 Сгруппирвоать по Т1.Значение, Т1.Состояние) КАК Поздние По Ранние.Значение = Поздние.Значение и Ранние.Состояние = Поздние.Состояние ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 12:24 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
Если Так, то вот: Выбрать Ранние.Значение, Ранние.Состояние, Ранние.Начало, Поздние.Конец из (Выбрать Т1.Значение, Т1.Состояние, Минимум(Т1.ДатаСостояния) как Начало Из ТЧ КАК Т1 Сгруппирвоать по Т1.Значение, Т1.Состояние) КАК Ранние Внутреннее Соединение (Выбрать Т1.Значение, Т1.Состояние, Максимум(Т1.ДатаСостояния) как Конец Из ТЧ КАК Т1 Сгруппирвоать по Т1.Значение, Т1.Состояние) КАК Поздние По Ранние.Значение = Поздние.Значение и Ранние.Состояние = Поздние.Состояние ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 12:27 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
Все равно немного не то. Надо получить таблицу вида Значение Истина с 01.01.2009 по 10.01.2009 Значение Ложь с 11.01.2009 по 15.01.2009 Значение Истина с 16.01.2009 по 20.01.2009 и т.д. Чтобы было понятнее - это что то вроде табеля рабочего времени где Значение - сотрудник, состояние явка, дата - календарная дата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 12:48 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
По-моему это запросом одним нельзя получить. Нужно обрабатывать полученную таблицу значений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 12:59 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
Спасибо за помощь, я тоже склоняюсь к такому же выводу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 13:02 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
или рекурсия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 13:34 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
По-моему это запросом одним нельзя получить. Нужно обрабатывать полученную таблицу значений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 13:50 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
По-моему это запросом одним нельзя получить. Нужно обрабатывать полученную таблицу значений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 13:50 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
Baumanez103, можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 15:02 |
|
||
|
Как сделать хитрый запрос?
|
|||
|---|---|---|---|
|
#18+
даже тема почти также называется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2009, 16:04 |
|
||
|
|

start [/forum/topic.php?fid=28&msg=36309041&tid=1523069]: |
0ms |
get settings: |
8ms |
get forum list: |
24ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
196ms |
get topic data: |
9ms |
get forum data: |
5ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 534ms |

| 0 / 0 |
