powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Нарастающий итог с разбивкой
25 сообщений из 27, страница 1 из 2
Нарастающий итог с разбивкой
    #38054950
LoMaCk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Помогите, пожалуйста, создать столбец с нарастающим итогом в запросе ACCESS.
Читал много подобных вопросов, так и не смог разобраться как его сделать.

Имеется запрос "Данные" с полями "Склад", "Товар" и "Доля в %", необходимо сделать столбец с нарастающим итогом с разбивокой по № Склада, чтобы получилось примерно так:

Склад Товар Доля в % Нарастающий %
1 товар1 40 40
1 товар2 40 80
1 товар3 20 100
2 товар1 25 25
2 товар2 35 60
2 товар3 40 100
3 товар1 30 30
3 товар2 50 80
3 товар3 20 100

Пробовал прописать в конструкторе: Нарастающий %: DSum("[Доля в %]";"Данные";"[Склад]<="&[Склад])
При создании не ругается, но если перейти в режим таблицы, в этом столбце выдает #Ошибка и зависает.

Помогите пожалуйста правильно написать формулу
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38054956
basil-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LoMaCk,
Не знаю, если ли такое в запросах (по идее не должно быть), но то, что вам надо есть в отчетах. Там можно задать нарастающий итог для конкретной графы в отчете
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38054961
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и в запросах, и в формах, и в отчетах.
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38054970
basil-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-ЛюбительМожно и в запросах, и в формах, и в отчетах.
ну, в формах-отчетах понятно. А в запросах-то как?
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38055011
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
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.
create table #data 
(
   storeID int, 
   goodName nvarchar(32), 
   goodPercent float
) 

truncate table #data 

insert into #data values (1, 'товар1', 40)
insert into #data values (1, 'товар2', 40)
insert into #data values (1, 'товар3', 20 )
insert into #data values (2, 'товар1', 25)
insert into #data values (2, 'товар2', 35)
insert into #data values (2, 'товар3', 40)
insert into #data values (3, 'товар1', 30)
insert into #data values (3, 'товар2', 50)
insert into #data values (3, 'товар3', 20)

select    
   d.storeID, d.goodName, d.goodPercent, goodPercentTotal = SUM(d2.goodPercent)
from #data d
left outer join #data d2
on d.storeID = d2.storeID
and d.goodName >= d2.goodName
group by d.storeID, d.goodName, d.goodPercent
order by d.storeID, d.goodName



storeID goodName goodPercent goodPercentTotal1 товар1 40 401 товар2 40 801 товар3 20 1002 товар1 25 252 товар2 35 602 товар3 40 1003 товар1 30 303 товар2 50 803 товар3 20 100
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38055021
basil-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, ну да, так можно.
Я-то имел в виду средствами "конструктора", тыкнуть в нужном свойстве.
А если самому sql писать то оно вообще много чего можно :)
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38055107
LoMaCk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист-Любитель
Код: sql
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.
create table #data 
(
   storeID int, 
   goodName nvarchar(32), 
   goodPercent float
) 

truncate table #data 

insert into #data values (1, 'товар1', 40)
insert into #data values (1, 'товар2', 40)
insert into #data values (1, 'товар3', 20 )
insert into #data values (2, 'товар1', 25)
insert into #data values (2, 'товар2', 35)
insert into #data values (2, 'товар3', 40)
insert into #data values (3, 'товар1', 30)
insert into #data values (3, 'товар2', 50)
insert into #data values (3, 'товар3', 20)

select    
   d.storeID, d.goodName, d.goodPercent, goodPercentTotal = SUM(d2.goodPercent)
from #data d
left outer join #data d2
on d.storeID = d2.storeID
and d.goodName >= d2.goodName
group by d.storeID, d.goodName, d.goodPercent
order by d.storeID, d.goodName



storeID goodName goodPercent goodPercentTotal1 товар1 40 401 товар2 40 801 товар3 20 1002 товар1 25 252 товар2 35 602 товар3 40 1003 товар1 30 303 товар2 50 803 товар3 20 100

Не смог разобраться, можно попродробнее(я только начинаю осваивать Access)?
Сначала идет создание таблицы с название "data", она в ручную прописывается по каждому товару(insert into #data values (1, 'товар1', 40))? Потом идет выбор данных d.storeID, d.goodName, d.goodPercent, goodPercentTotal = SUM(d2.goodPercent) если d это название таблицы, то что такое d2? from #data d
left outer join #data d2 и откуда берется data d2?
Если вставить этот запрос в SQL, то он выдает ошибку неправильный синтаксис и выделяет goodName nvarchar(32).
Помогите пжл разобраться.
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38055157
Фотография George-III
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LoMaCkПрограммист-Любитель
Код: sql
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.
create table #data 
(
   storeID int, 
   goodName nvarchar(32), 
   goodPercent float
) 

truncate table #data 

insert into #data values (1, 'товар1', 40)
insert into #data values (1, 'товар2', 40)
insert into #data values (1, 'товар3', 20 )
insert into #data values (2, 'товар1', 25)
insert into #data values (2, 'товар2', 35)
insert into #data values (2, 'товар3', 40)
insert into #data values (3, 'товар1', 30)
insert into #data values (3, 'товар2', 50)
insert into #data values (3, 'товар3', 20)

select    
   d.storeID, d.goodName, d.goodPercent, goodPercentTotal = SUM(d2.goodPercent)
from #data d
left outer join #data d2
on d.storeID = d2.storeID
and d.goodName >= d2.goodName
group by d.storeID, d.goodName, d.goodPercent
order by d.storeID, d.goodName



storeID goodName goodPercent goodPercentTotal1 товар1 40 401 товар2 40 801 товар3 20 1002 товар1 25 252 товар2 35 602 товар3 40 1003 товар1 30 303 товар2 50 803 товар3 20 100

Не смог разобраться, можно попродробнее(я только начинаю осваивать Access)?
Сначала идет создание таблицы с название "data", она в ручную прописывается по каждому товару(insert into #data values (1, 'товар1', 40))? Потом идет выбор данных d.storeID, d.goodName, d.goodPercent, goodPercentTotal = SUM(d2.goodPercent) если d это название таблицы, то что такое d2? from #data d
left outer join #data d2 и откуда берется data d2?
Если вставить этот запрос в SQL, то он выдает ошибку неправильный синтаксис и выделяет goodName nvarchar(32).
Помогите пжл разобраться.
Это символ SQL server, nvarchar - тип данных - переменное символьное с поддержкой UNICODE. Уберите n и решетку в инструкции на создание таблицы и в добавлении
Запрос так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select    
   d.storeID, d.goodName, d.goodPercent, SUM(d2.goodPercent) As goodPercentTotal
from data d
left join data d2
on d.storeID = d2.storeID
and d.goodName >= d2.goodName
group by d.storeID, d.goodName, d.goodPercent
order by d.storeID, d.goodName
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38055332
LoMaCk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
George-III,

Теперь он ругается на truncate table #data .

Не могу понять откуда берется data.d2
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38055360
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT MSysSaldoVur.Дата, MSysSaldoVur.Оплаты AS Выручки, MSysSaldoVur.Доходы, MSysSaldoVur.Приходы AS Вбанк, (select sum(d.[Итог])+MSysSaldoVur.Начало from MSysSaldoVur d where d.[Дата] <= e.[Дата]) AS Сальдо, MSysSaldoVur.ОплКвит, MSysSaldoVur.ОплНал, MSysSaldoVur.Начало, Format$([MSysSaldoVur].[Дата],'yyyy') AS В FROM MSysSaldoVur INNER JOIN MSysSaldoVur AS e ON MSysSaldoVur.Дата=e.Дата ORDER BY MSysSaldoVur.Дата DESC , 1;

Это я выдрал со своей проги под себя подгони
Синим - ключевой момент(ссылка на саму себя)
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38055369
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игортан,

На основании этого запроса строится, не забудь про группировку.
Это родительский селект
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT MSysRabota.Дата, Sum(IIf([Операции]=3,[Сумма],0)) AS Оплаты, 
Sum(IIf([Операции]=4,[Сумма],0)) AS Приходы, Sum(IIf([Операции]=15,[Сумма],0)) AS Доходы, 
MSysKontrag.Начало, Sum(IIf([Операции]=17,[Сумма],0)) AS ОплКвит, 
Sum(IIf([Операции]=18,[Сумма],0)) AS ОплНал, Sum(IIf([Операции]=3,[Сумма],0)-IIf([Операции]=4,
[Сумма],0)-IIf([Операции]=15,[Сумма],0)-IIf([Операции]=18,[Сумма],0)-IIf([Операции]=17,[Сумма],0)) AS Итог
FROM MSysRabota, MSysKontrag

WHERE (((MSysRabota.Операции)=3 Or (MSysRabota.Операции)=4 Or (MSysRabota.Операции)=15 Or 
(MSysRabota.Операции)=17 Or (MSysRabota.Операции)=18))

GROUP BY MSysRabota.Дата, MSysKontrag.Начало

ORDER BY MSysRabota.Дата DESC;



не обращай внимания на РазныеТамПоля. Свои ставь
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38055370
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игортан,

Вот для удобочитания
Код: plsql
1.
2.
3.
4.
5.
6.
SELECT MSysSaldoVur.Дата, MSysSaldoVur.Оплаты AS Выручки, MSysSaldoVur.Доходы, 
MSysSaldoVur.Приходы AS Вбанк, 
(select sum(d.[Итог])+MSysSaldoVur.Начало from MSysSaldoVur d where d.[Дата] <= e.[Дата]) AS Сальдо, 
MSysSaldoVur.ОплКвит, MSysSaldoVur.ОплНал, MSysSaldoVur.Начало, Format$([MSysSaldoVur].[Дата],'yyyy') 
AS В FROM MSysSaldoVur INNER JOIN MSysSaldoVur AS e ON MSysSaldoVur.Дата=e.Дата ORDER BY 
MSysSaldoVur.Дата DESC , 1; 
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38055457
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LoMaCkGeorge-III,

Теперь он ругается на truncate table #data .

Не могу понять откуда берется data.d2Наличие мозга при переклеивании примеров с форума обязательно.
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38055487
!??
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
!??
Гость
Программист-ЛюбительLoMaCkGeorge-III,

Теперь он ругается на truncate table #data .

Не могу понять откуда берется data.d2Наличие мозга при переклеивании примеров с форума обязательно.
Не надо даже мозга, умоляю вас
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38055581
Фотография George-III
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LoMaCkТеперь он ругается на truncate table #data .
Уберите
LoMaCkНе могу понять откуда берется data.d2
Не заморачивайтесь
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38064289
LoMaCk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем ОГРОМНОЕ спасибо.
Все получилось. осталось только в базу затянуть
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38137140
киндер-84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, помогите, пожалуйста, написать запрос для подсчёта данных нарастающим итогом для таблицы :

месяц объём
01.02.2013 1000
01.02.2013 1800
01.03.2013 1700

результат должен получиться:

месяц объём
01.01.2013 1000
01.02.2013 2800
01.03.2013 4500
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38137149
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
киндер-84,

вот тут - 13538755 уже "написали",

"шо нэ ясно ?" (с)
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38137164
kinder-84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я просто только начинаю разбираться с SQL. Опишите, пож., подробно по каждому шагу, где что делается и где что получается, а то у меня пока программы нет, чтобы проверить.

1 шаг. создаем таблицу:

create table #data
(
month int
values float
)
truncate table #data
insert into #data values (1.01.2013, 1000)
insert into #data values (1.02.2013, 1800)
insert into #data values (1.03.2013, 1700)
А вот что дальше делать - я не поняла. Объясните, пожалуйста
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38139151
kinder-84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попыталась перестроить под свою таблицу, только что-то не получается, выдаёт синтаксическую ошибку на truncate. Что делать?
create table data
(
month int,
goodNumber int
)

truncate table data

insert into data goodNumber (1? '1.01.2013', 1000)
insert into data goodNumber (2? '1.02.2013', 1800)
insert into data goodNumber (3? '1.03.2013', 1700)

select
d.month, d.goodNumber, d.nameTotal = SUM(d2.goodNumber)
from data d
left outer join data d2
on d.month = d2.month
and d.goodNumber >= d2.goodNumber
group by d.month
order by d.month, d.goodNumber
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38139227
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kinder-84,

не нужен вам truncate,
это был пример для МС СКЛ Сервера, в Акцессе - нет такой команды

и вообще, для сабжевого вопроса, ничего из того что вы пишете - не нужно, кроме последнего запроса SELECT

не надо таблицу создавать запросом - create table data
можно в конструкторе создать,

не надо запросами её заполнять - insert into data goodNumber (1? '1.01.2013', 1000)
достаточно лапами настучать прямо в "таблицу"

нужен только запрос
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #38144740
kinder-84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за подсказку
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Нарастающий итог с разбивкой
    #39761556
Alexws3112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист-Любитель[src]

select
d.storeID, d.goodName, d.goodPercent, goodPercentTotal = SUM(d2.goodPercent)
from #data d
left outer join #data d2
on d.storeID = d2.storeID
and d.goodName >= d2.goodName
group by d.storeID, d.goodName, d.goodPercent
order by d.storeID, d.goodName

[/CSV]

В этом месте (красным выделил) and d.goodName >= d2.goodName "Syntax error (missing operator) in query expression "

мой запрос
SELECT Requir_calc.Week, Requir_calc.Item_Name, Requir_calc.Req_quant, sum(Requir_calc2.Req_quant) as Req_quantTotal
FROM Requir_calc
left join data Requir_calc2
on Requir_calc.Week=Requir_calc2.Week
And Requir_calc.Item_Name>=Requir_calc2.Item_Name
groupe by Requir_calc.Week, Requir_calc.Item_Name, Requir_calc.Req_quant
order by Requir_calc.Week, Requir_calc.Item_Name
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #39761600
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LoMaCkИмеется запрос "Данные" с полями "Склад", "Товар" и "Доля в %", необходимо сделать столбец с нарастающим итогом с разбивокой по № Склада, чтобы получилось примерно так:

Склад Товар Доля в % Нарастающий %
1 товар1 40 40
1 товар2 40 80
1 товар3 20 100
2 товар1 25 25
2 товар2 35 60
2 товар3 40 100
3 товар1 30 30
3 товар2 50 80
3 товар3 20 100
Стесняюсь спросить:а как можно считать нарастающий итог для разных товаров (товар1,товар2....товарN). Что это будет за величина?(диагональ окружности? Да если еще и разные ед.изм....Да и проценты от чего?)
...
Рейтинг: 0 / 0
Нарастающий итог с разбивкой
    #39761614
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexws3112,
left join data Requir_calc2
при этом
Код: sql
1.
2.
from #data d
left outer join #data d2


нужно понимать в вашем случае как
Код: sql
1.
2.
FROM Requir_calc as d
left join Requir_calc2 as d2
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Нарастающий итог с разбивкой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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