Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Можно ли как получить выборку из таблицы с расчетом нарастающего итога / 18 сообщений из 18, страница 1 из 1
09.07.2003, 09:45
    #32202704
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
Можно ли как получить выборку из таблицы с расчетом нарастающего итога:
Например есть таблица с полем F1, хранящем некоторые денежные суммы
Нужно получить выборку содержащую 2 поля :
F1 и F2 ,
где в F2 - нарастающий итог по F1 ( F2(i)=F2(i-1)+F1(i-1) , F2(1)=F1(1))
...
Рейтинг: 0 / 0
09.07.2003, 09:57
    #32202725
VIG
VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
В таблице есть поле или комбинация полей являющихся уникальным ключом?
...
Рейтинг: 0 / 0
09.07.2003, 09:58
    #32202729
Geen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
Рекомендую провести поиск по "нарастающий итог" в форуме.
Сам так нашел. Кстати есть где-то здесь прикольнейшая функция по этому поводу:)

Geen
...
Рейтинг: 0 / 0
09.07.2003, 10:00
    #32202730
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
имхо,

запросом это сделать нельзя. Но нарастающий итог можно сделать в отчете

впрочем, если подумать, и если есть какой-нибудь порядковый номер, то можно суммировать поле, где порядковый номер меньше или равен текущему...
...
Рейтинг: 0 / 0
09.07.2003, 10:22
    #32202767
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
За основу лучше взять алгоритм из http://www.sql.ru/faq/faq_topic.aspx?fid=125
...
Рейтинг: 0 / 0
09.07.2003, 10:30
    #32202784
VIG
VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
2 fedd
запросом это сделать нельзя
Можно-если есть уникальный ключ
...
Рейтинг: 0 / 0
09.07.2003, 10:37
    #32202803
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
VIG: как?
В предложенном Виктором примере используется некий ключ, но он не только уникальный, но им последовательный, на этом все и построено, насколько я понял.
А с просто уникальным ключом что делать?
...
Рейтинг: 0 / 0
09.07.2003, 10:54
    #32202835
VIG
VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
2 fedd
А с просто уникальным ключом что делать?
Вообще то я имел в виду не только уникальный, но им последовательный
Но и с просто уникальным ключом можно извратиться-например написать hash-функцию ,возвращающую числовое значение, соответствующее ключу.
...
Рейтинг: 0 / 0
09.07.2003, 10:54
    #32202837
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
>В предложенном Виктором примере
Ну, пример предложен форумом MS SQL

>используется некий ключ, но он не только уникальный, но им последовательный

И сколько я не всматривался не нашел "последовательного" ключа (счетчика)

create table #t(id int, sum1 decimal(10,2), tot_sum decimal(10,2))
...
Рейтинг: 0 / 0
09.07.2003, 11:35
    #32202917
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
Большое спа всем ответившим,
насчет уникального и одновременно последовательного ключа :
как я понимаю , иметь упорядочивающий реквизит логически необходимо, т.к. иначе непонятно в каком порядке проводить накопление - множество-то в выборке само по себе не является упорядоченным по определению.

Тут возникли еще некоторые траблы:
Не могу решить усложненную задачку : Нужно - все что хотелось выше плюс еще сделать для различных групп, т.е. есть , есть еще поле скажем, "КодПоставщика" и нужно посчитать нарастающие итоги для каждого из Поставщиков по дням :

Т.е. исходная таблица : КодПоставщика, Дата, ДенСуммаЗаДень
Нужна таблица с нарастающими по дням для каждого поставщика итогами,
По всем постащикам итоги наращивать не надо - только для каждого по дням :
КодПоставщика, Дата, ДенСуммаЗаДень, ИтогиНаДень
...
Рейтинг: 0 / 0
09.07.2003, 11:41
    #32202938
grigorii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
SELECT Таблица1.Поле1, qq(Таблица1.Поле1) AS Выражение1
FROM Таблица1;

qq - Функция в Access
перед запуском запроса запусти clear

modul1
----------------------------
Option Compare Database
Option Explicit
Dim i As Long
--------------------------
Public Function qq(a As Long) As Long
i = i + a
qq = qq + i
End Function
----------------------
Public Function clear()
i = 0
End Function
----------------------
...
Рейтинг: 0 / 0
09.07.2003, 11:43
    #32202944
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
А я не только имел в виду, но и говорил

Счетчика действительно нет.

Последовательный:

Код: plaintext
1.
2.
3.
4.
insert #t(id, sum1) values( 1 ,  1 . 2 )
insert #t(id, sum1) values( 2 ,  1 . 5 )
insert #t(id, sum1) values( 3 ,  1 . 7 )
insert #t(id, sum1) values( 4 , - 0 . 5 )


(1, 2, 3, 4)

Где это используется:

left outer join #t b on b.id < a.id

суммируется то, где id меньше текущего
...
Рейтинг: 0 / 0
09.07.2003, 11:46
    #32202953
grigorii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
SELECT Таблица1.Поле1, qq(Таблица1.Поле1) AS Выражение1
FROM Таблица1;

перед запуском clear

modul1

-----------------------------
Option Compare Database
Option Explicit
Dim i As Long
---------------------------
Public Function qq(a As Long) As Long
i = i + a
qq = qq + i
End Function
----------------------
Public Function clear()
i = 0
End Function
...
Рейтинг: 0 / 0
09.07.2003, 11:50
    #32202960
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
хех, не только я торможу, но и sql.ru ;)
...
Рейтинг: 0 / 0
09.07.2003, 12:05
    #32202995
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
Люди, что вы с этим счетчиком возитесь,
скажите ради бога че делать - то если нужно еще по группам поставщиков это сделать (см. выше) или может объясните как приведенный Senin Viktor пример работает :

Работать - то он у меня работает, но вот я что-то не въезжаю - к чему применяется группировка - ведь сумирование по Group by a.id должно вырождаться в суммрование одной строки с данным a.id , и как условие связи заставляет суммироваться целую группу по a.id>b.id ?
...
Рейтинг: 0 / 0
09.07.2003, 12:18
    #32203021
VIG
VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
А ты запусти этот запрос без Group by -"Ты все поймешь,ты все увидишь сам"
...
Рейтинг: 0 / 0
09.07.2003, 12:37
    #32203049
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
VIG :
Да - действительно уже и сделал это
А то , что я хотел оказалось тоже просто :

SELECT a.id, max(a.sum1) AS sum1, sum(IIf(isnull(b.sum1),0,b.sum1)) AS tot_sum, a.KodP
FROM t1 AS a LEFT JOIN t1 AS b ON (b.id<=a.id) AND (a.kodP=b.KodP)
GROUP BY a.id, a.KodP;

Вот все-равно одно меня смущает - как раз обнаруженное после запуска без group by - производительность - ведь без group by полученный Select содержит повторяющиеся для каждого Id группы и потом происходит сумирование записей в этих группах а предыдущие накопления никак не используются - или используются , если не используются - то не быстрее ли будет позаписная обработка в цикле , без селекания ?
...
Рейтинг: 0 / 0
09.07.2003, 13:00
    #32203088
VIG
VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как получить выборку из таблицы с расчетом нарастающего итога
то не быстрее ли будет позаписная обработка в цикле , без селекания ?
Сделай оба варианта и проверь производительность. Имхо вариант с селестами лучше ,а если еще правильно индексы настроить - то вааще!
Плюс подумай о будущем -будешь переходить на SqlServer а у тебя уже есть
готовое (и универсальное) решение
И последнее Имхо вариант запроса с Inner Join ... on (a.id>=b.id)
лучше чем с Left join (избавляешься от Null значений)
Успехов
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Можно ли как получить выборку из таблицы с расчетом нарастающего итога / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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