Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Задачка по истории
|
|||
|---|---|---|---|
|
#18+
Уважаемые, не подскажет ли кто более эффективный алгоритм выборки из таблицы истории. SQL 7.0 set nocount on create table #t1( -- история i int, -- PK j int, -- критерий группировки k int -- время события --, l int прочие параметры ) create table #t2( -- граничные значения j int, k int --, constraint unique (j, k) ) insert #t1 select 1, 1, 1 insert #t1 select 2, 1, 2 insert #t1 select 3, 1, 3 insert #t1 select 4, 2, 1 insert #t1 select 5, 2, 2 insert #t1 select 6, 3, 1 insert #t2 select 1, 3 insert #t2 select 2, 2 insert #t2 select 3, 1 select t4.i, t4.j, t4.k from (select t1.j, max(t1.k) as k from #t1 as t1 inner join #t2 as t2 on t1.j = t2.j and t1.k < t2.k group by t1.j) as t3 inner join #t1 as t4 on t3.j = t4.j and t3.k = t4.k drop table #t1 drop table #t2 set nocount off PS Особенно лестно было бы увидеть ответ знатока оригинальных, в лучшем смысле этого слова, алгоритмов SergSuper`a. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2002, 14:54 |
|
||
|
Задачка по истории
|
|||
|---|---|---|---|
|
#18+
Честно говоря мне лень соображать что же Вы хотите, разбирая Ваш скрипт(обычно хватает 2-х ипостасей одной таблицы для таких задач). Вы бы существенно облегчили мне работу, если бы написали, что же Вам надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2002, 14:46 |
|
||
|
Задачка по истории
|
|||
|---|---|---|---|
|
#18+
Например, история изменеия счета депо (aka #t1) i, j , k , l ------------------------------------------- 1, счет1-активы1, 1 января, количество-и т.д. 2, счет1-активы1, 2 января, количество-и т.д. 3, счет1-активы1, 5 января, количество-и т.д. 4, счет1-активы2, 2 января, количество-и т.д. 5, счетN-активыM, 8 января, количество-и т.д. небходимо получить состояние на счетах определенных активов перед определенными датами. Условия задаются таблицей #t2 счет1-активы1, 5 января счет1-активы1, 5 января ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2002, 08:43 |
|
||
|
Задачка по истории
|
|||
|---|---|---|---|
|
#18+
Например, история изменеия счета депо (aka #t1) i, j , k , l ------------------------------------------- 1, счет1-активы1, 1 января, количество-и т.д. 2, счет1-активы1, 2 января, количество-и т.д. 3, счет1-активы1, 5 января, количество-и т.д. 4, счет1-активы2, 2 января, количество-и т.д. 5, счетN-активыM, 8 января, количество-и т.д. небходимо получить состояние на счетах определенных активов перед определенными датами. Условия задаются таблицей #t2( сочетание j уникальное) j , k ------------------------ счет1-активы1, перед 5 января счетN-активыM, перед 10 января ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2002, 08:47 |
|
||
|
Задачка по истории
|
|||
|---|---|---|---|
|
#18+
Пардон за недописаные постинги. На выходе должна быть выборка из #t1 i, j , k , l ------------------------------------------- 2, счет1-активы1, 2 января, количество-и т.д. 5, счетN-активыM, 8 января, количество-и т.д. [\pre] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2002, 08:57 |
|
||
|
Задачка по истории
|
|||
|---|---|---|---|
|
#18+
При такой структуре отпимально так, как у Вас написано. Я правда делаю еще через одну временную таблицу(не привык писать ...from(select... ), но это не принципиально. Собственно вариантов то и не много. Но если в таблицу добавить еще одно поле - время следующего изменения - то задача выборки резко упрощается. Правда появляется задача это поле постоянно пересчитывать... create table #t1( -- история i int, -- PK j int, -- критерий группировки k int, -- время события k_next int, -- время следующего события --, l int прочие параметры ) create table #t2( -- граничные значения j int, k int --, constraint unique (j, k) ) insert #t1 select 1, 1, 1,2 insert #t1 select 2, 1, 2,3 insert #t1 select 3, 1, 3,1000000 insert #t1 select 4, 2, 1,2 insert #t1 select 5, 2, 2,1000000 insert #t1 select 6, 3, 1,1000000 insert #t2 select 1, 3 insert #t2 select 2, 2 insert #t2 select 3, 1 select t4.i, t4.j, t4.k from #t1 t4, #t2 t2 where t4.j=t2.j and t4.k<=t2.k and t4.k_next>t2.k ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2002, 09:31 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32025852&tid=1823423]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 381ms |

| 0 / 0 |
