Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Нарастающий итог с разбивкой / 25 сообщений из 27, страница 1 из 2
27.11.2012, 15:23
    #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
27.11.2012, 15:27
    #38054956
basil-77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарастающий итог с разбивкой
LoMaCk,
Не знаю, если ли такое в запросах (по идее не должно быть), но то, что вам надо есть в отчетах. Там можно задать нарастающий итог для конкретной графы в отчете
...
Рейтинг: 0 / 0
27.11.2012, 15:29
    #38054961
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарастающий итог с разбивкой
Можно и в запросах, и в формах, и в отчетах.
...
Рейтинг: 0 / 0
27.11.2012, 15:34
    #38054970
basil-77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарастающий итог с разбивкой
Программист-ЛюбительМожно и в запросах, и в формах, и в отчетах.
ну, в формах-отчетах понятно. А в запросах-то как?
...
Рейтинг: 0 / 0
27.11.2012, 15:49
    #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
27.11.2012, 15:54
    #38055021
basil-77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарастающий итог с разбивкой
А, ну да, так можно.
Я-то имел в виду средствами "конструктора", тыкнуть в нужном свойстве.
А если самому sql писать то оно вообще много чего можно :)
...
Рейтинг: 0 / 0
27.11.2012, 16:28
    #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
27.11.2012, 16:42
    #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
27.11.2012, 17:54
    #38055332
LoMaCk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарастающий итог с разбивкой
George-III,

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

Не могу понять откуда берется data.d2
...
Рейтинг: 0 / 0
27.11.2012, 18:12
    #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
27.11.2012, 18:19
    #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
27.11.2012, 18:20
    #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
27.11.2012, 19:50
    #38055457
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарастающий итог с разбивкой
LoMaCkGeorge-III,

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

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

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

Не могу понять откуда берется data.d2Наличие мозга при переклеивании примеров с форума обязательно.
Не надо даже мозга, умоляю вас
...
Рейтинг: 0 / 0
27.11.2012, 22:32
    #38055581
George-III
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарастающий итог с разбивкой
LoMaCkТеперь он ругается на truncate table #data .
Уберите
LoMaCkНе могу понять откуда берется data.d2
Не заморачивайтесь
...
Рейтинг: 0 / 0
04.12.2012, 13:53
    #38064289
LoMaCk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарастающий итог с разбивкой
Всем ОГРОМНОЕ спасибо.
Все получилось. осталось только в базу затянуть
...
Рейтинг: 0 / 0
04.02.2013, 22:45
    #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
04.02.2013, 22:59
    #38137149
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарастающий итог с разбивкой
киндер-84,

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

"шо нэ ясно ?" (с)
...
Рейтинг: 0 / 0
04.02.2013, 23:22
    #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
06.02.2013, 00:19
    #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
06.02.2013, 02:00
    #38139227
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарастающий итог с разбивкой
kinder-84,

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

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

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

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

нужен только запрос
...
Рейтинг: 0 / 0
09.02.2013, 23:45
    #38144740
kinder-84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарастающий итог с разбивкой
спасибо за подсказку
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
18.01.2019, 15:26
    #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
18.01.2019, 16:14
    #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
18.01.2019, 16:34
    #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
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Нарастающий итог с разбивкой / 25 сообщений из 27, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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