|
|
|
SQL запрос в ORACLE 8.1.7
|
|||
|---|---|---|---|
|
#18+
У меня возник вот какой вопрос (чисто практический) Никто не пробовал получить следующие табличные данные средствами стандартного SQL: Дата Сумма1 Сумма2 Сумма3 где сумма3 некий результат за каждую дату (например, остаток). Я же хочу получить столбец, каждая запись которого будет аккумулировать значения сумм, находящиеся выше данной точки (например даты) Таким образом формируются накопительные суммы за каждую дату. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2003, 16:53 |
|
||
|
SQL запрос в ORACLE 8.1.7
|
|||
|---|---|---|---|
|
#18+
create table test_table( begin_date date, sum number(3)); declare i integer; begin for i in 1..100 loop insert into test_table values(sysdate - 100 + i, 100 + i); end loop; end; / select t.begin_date, (select sum(tt.sum) from test_table tt where tt.begin_date < t.begin_date) from test_table t; Connected to Oracle9i Enterprise Edition Release 9.0.1.1.1 Connected as chtpz SQL> Table created PL/SQL procedure successfully completed BEGIN_DATE (SELECTSUM(TT.SUM)FROMTEST_TAB ----------- ------------------------------ 02.10.2002 03.10.2002 101 04.10.2002 203 05.10.2002 306 06.10.2002 410 07.10.2002 515 08.10.2002 621 09.10.2002 728 10.10.2002 836 11.10.2002 945 12.10.2002 1055 13.10.2002 1166 14.10.2002 1278 15.10.2002 1391 16.10.2002 1505 17.10.2002 1620 18.10.2002 1736 19.10.2002 1853 20.10.2002 1971 21.10.2002 2090 И так далее................ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2003, 17:20 |
|
||
|
SQL запрос в ORACLE 8.1.7
|
|||
|---|---|---|---|
|
#18+
Думаю, что для этого надо либо пользоваться циклом либо подбивать итоги за период, отдельно. Рассуждение: Если делать стандартным SQL - то неявный курсор должен будет "видеть" и учитывать в своей работе изменения, внесенные собой же (накопленные суммы) - по-моему так не бывает. Значит SQL отпадает. Так или не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2003, 17:24 |
|
||
|
SQL запрос в ORACLE 8.1.7
|
|||
|---|---|---|---|
|
#18+
Вот на Oracle 9i (может и на 8i), но скорее всего на Enterprise Edition такая накопительная сумма: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2003, 17:56 |
|
||
|
SQL запрос в ORACLE 8.1.7
|
|||
|---|---|---|---|
|
#18+
А если имеется такая задача. Иерархическая структура: Имется продовец, у него начальник. Нужно вывести дерево, где результатьм вывода будет Продовец Заработок. У начальника Заработок=Его заработок+ заработок всех его подчененных. Как в сетевом маркетенге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2003, 06:21 |
|
||
|
SQL запрос в ORACLE 8.1.7
|
|||
|---|---|---|---|
|
#18+
Пример : имеется 2 таблицы (можно 1 ничего не изменяет) структура: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. т.е. дерево и справочник. Запрос быглядит примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2003, 07:30 |
|
||
|
SQL запрос в ORACLE 8.1.7
|
|||
|---|---|---|---|
|
#18+
А с использование аналитических функций можно нагородить такой запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2003, 08:22 |
|
||
|
SQL запрос в ORACLE 8.1.7
|
|||
|---|---|---|---|
|
#18+
Для ShgGena Пример хороший! А если значения сумм для нижних уровней иерархии храняться в другой таблице и нужно получить такой же результат, т.е. суммы по всему дереву иерархии, которое есть некий классификатор. Другими словами есть таблица1 (дерево - node_id, root_id, node_name), таблица2 (значения сумм нижних уровней иерархии - node_id, summa). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2003, 14:46 |
|
||
|
SQL запрос в ORACLE 8.1.7
|
|||
|---|---|---|---|
|
#18+
А если значения сумм для нижних уровней иерархии храняться в одной таблице, а само дерево в другой таблице и нужно получить такой же результат, т.е. суммы по всему дереву иерархии, которое есть некий классификатор. Другими словами есть таблица1 (дерево - node_id, root_id, node_name), таблица2 (значения сумм нижних уровней иерархии - node_id, summa). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2003, 18:55 |
|
||
|
SQL запрос в ORACLE 8.1.7
|
|||
|---|---|---|---|
|
#18+
Veroiatno zapros budet: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. izmeneniya minimalnie, poskolku sum() i opredelenie spiska uzlov summirovania mi ispolzuem nezavisimo. v zaprose net join po tablicam, est join tolko po korrelirovannim podzaprosam ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2003, 19:34 |
|
||
|
SQL запрос в ORACLE 8.1.7
|
|||
|---|---|---|---|
|
#18+
Спасибо за SQL суммы по узлам иерархического списка. У меня есть еще одна заморочка, связанная с этой же темой. есть представление, получаемое объединением дву таблиц (UNION ALL) со следующей структурой: Дата Сумма1 Сумма2 Сумма3 Где Сумма1-значение из первой таблицы, Сумма2-значение из второй таблицы, а Сумма3-значение из первой и второй таблицы. Как в этом случае сделать подзапросы для определения накопительной суммы за каждую дату по полю Сумма3 (с учетом значения из первой и второй таблицы как все суммы из первой таблицы до значения даты + все суммы из второй таблицы до текущего значения даты)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2003, 21:52 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32088558&tid=1992172]: |
0ms |
get settings: |
9ms |
get forum list: |
25ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
146ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 218ms |
| total: | 491ms |

| 0 / 0 |
