|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
Добрый день всем. Есть таблица в которой есть 3 поля: NUMB, DATA_S, DATA_E. пример: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Подскажите как получить таблицу такого вида: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
NUMB может быть разное количество. Может попасться так что будет период несколько месяцев. Может быть так что будет и разрыв между периодами. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 16:24 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
Hello, Akrush! You wrote on 13 мая 2016 г. 16:33:56: Akrush> Подскажите как получить таблицу такого вида:принцип непонятен. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 16:34 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
akrushПодскажите как получить таблицу такого вида Это ты спрашивай у того странного человека, который спроектировал такую странную структуру данных. Кроме него вряд ли кто-то поймёт что это за фигня. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 16:39 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
Мимопроходящий, Принцип такой: 1. Есть период 2. В этот период происходят какие-то действия во время которых создается новая строка с новым NUMB, но "автор" не менял период. 3. Мне нужно навести порядок. Увы что досталось - то досталось. Нужно правильно расставить периоды. Если в период "DATA_S"-"DATA_E" создается новая строка, то нужно в предыдущем поставить DATA_S минус 1 день (чтобы получить последний день прошлого месяца, т.к. "DATA_S" - всегда первый день месяца) как-то так ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 16:47 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
akrushМимопроходящий, Принцип такой: 1. Есть период 2. В этот период происходят какие-то действия во время которых создается новая строка с новым NUMB, но "автор" не менял период. 3. Мне нужно навести порядок. Увы что досталось - то досталось. Нужно правильно расставить периоды. Если в период "DATA_S"-"DATA_E" создается новая строка, то нужно в предыдущем поставить DATA_S минус 1 день (чтобы получить последний день прошлого месяца, т.к. "DATA_S" - всегда первый день месяца) как-то так Сори не пометил: в DATA_E записать DATA_S минус 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 16:48 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
Можно ли это сделать средствами ФБ или "тупой" перебор строк в делфи ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 16:49 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
тут программист нужен. я так думаю. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 16:49 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
akrush, Так что-ли? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 16:49 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
DarkMasterakrush, Так что-ли? Код: sql 1.
Формула правильная, но как пройтись по таблице и применить ее к нужным строкам. "ГОРЮ", после выходных ехать конвертировать базы, а там такая ерунда. Помогите, плиз. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 16:54 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
Приведенный фрагмент - это то на что нужно ориентироваться. В каждой группе есть "номер дела" (APP) В сочетание с NUM - получаю уникальный ключ. В таблице есть индекс: APP, NUMB вот описание таблицы: Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 17:06 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
Если брать "тупым" перебором, то получается: 1. select distinct app from dela - я получаю все номера дел. 2. select app, numb, data_s, data_e from dela where app=:app - я отбираю только одно дело со всеми периодами. а дальше иду по строкам, беру numb=1, запоминаю data_s и data_e. беру numb=2: если у него data_s < data_e но data_s > data_s (numb=1) тогда data_e (numb=1) = data_s - 1 day но это получается жутко долго. В таблице около 700 000 строк, из них около 45 000 дел. Можно ли как-то быстрее??? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 17:18 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
akrush, А это так и должно быть, что DATA_E равно последнему дню предыдущего месяца? Код: powershell 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 19:00 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
akrushЕсли брать "тупым" перебором Если приращение NUMB всегда равно 1, то получить записи для апдейта можно так: Код: plsql 1. 2. 3. 4. 5.
Можно выполнить запрос в IBE и выкачать его в UPDATE SCRIPT ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 19:22 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
Polesovakrush, А это так и должно быть, что DATA_E равно последнему дню предыдущего месяца? Код: powershell 1.
да, так должно быть. Если есть 2 обращения с одного и того же месяца, то предыдущее имеет, как бы, отрицательный период: data_s-data_e=-1 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 19:36 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
PolesovakrushЕсли брать "тупым" перебором Если приращение NUMB всегда равно 1, то получить записи для апдейта можно так: Код: plsql 1. 2. 3. 4. 5.
Можно выполнить запрос в IBE и выкачать его в UPDATE SCRIPT Спасибо, сейчас попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 19:37 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
Polesov, Огромное спасибо, наскорую проверил - вроде как ХОРОШО. Сейчас точнее проверю. А как быть в случае если "Data_s" - "data_e" должно быть -1. Как то это можно отловить. Таких строк не много - но увы встречаются ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 19:48 |
|
как упорядочить периоды дат
|
|||
---|---|---|---|
#18+
Скорее всего только перебором. Возможно с помощью хранимой процедуры или execute block, чтобы не тянуть на клиента. Можно использовать для перебора запрос, похожий на тот, что Полесов предложил. Но врядли точно в таком виде. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 21:59 |
|
|
start [/forum/topic.php?fid=40&msg=39235396&tid=1562180]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 17ms |
total: | 176ms |
0 / 0 |