powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Накопительный итог
6 сообщений из 6, страница 1 из 1
Накопительный итог
    #39715465
ondorsal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, сильно туплю.
Необходимо посчитать нарастающий итог по каждому продукту.
Исходная таблица, извините за форматирование:
Date - дата
Product - продукт
Pack - количество

Date Product Pack
2018-01-01 00:00:00.000 Принтер 1
2018-01-02 00:00:00.000 Компьютер 2
2018-01-03 00:00:00.000 Принтер 3
2018-01-04 00:00:00.000 Принтер 4
2018-01-05 00:00:00.000 Принтер 5

Написал:
SELECT L.[Date],L.[Product],L.Pack,SUM (R.[Pack]) as RunningTotal
FROM tbl as L left outer join tbl as R
on L.date>=R.date and L.Product=R.Product
group by L.[Date] ,L.[Product],L.Pack
order by L.Date

Получилось:

Date Product Pack RunningTotal
2018-01-01 00:00:00.000 Принтер 1 1
2018-01-02 00:00:00.000 Компьютер 2 2
2018-01-03 00:00:00.000 Принтер 3 4
2018-01-04 00:00:00.000 Принтер 4 8
2018-01-05 00:00:00.000 Принтер 5 13

Нужно так, добавить на каждую дату сумму итогов по каждому продукту:

Date Product Pack RunningTotal
2018-01-01 00:00:00.000 Принтер 1 1
2018-01-02 00:00:00.000 Принтер 0 1
2018-01-02 00:00:00.000 Компьютер 2 2
2018-01-03 00:00:00.000 Принтер 3 4
2018-01-03 00:00:00.000 Компьютер 0 2
2018-01-04 00:00:00.000 Компьютер 0 2
2018-01-04 00:00:00.000 Принтер 4 8
2018-01-05 00:00:00.000 Компьютер 0 2
2018-01-05 00:00:00.000 Принтер 5 13

Как это сделать?

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

в гугл или форум вставить "накопительный итог" не получилось?
...
Рейтинг: 0 / 0
Накопительный итог
    #39715475
ondorsal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,
Гугл у меня заблокирован, работает только sql.ru

Разобрался с форматированием таблиц.
Исходная таблица:
Date Product Pack2018-01-01 00:00:00.000 Принтер 12018-01-02 00:00:00.000 Компьютер 22018-01-03 00:00:00.000 Принтер 32018-01-04 00:00:00.000 Принтер 42018-01-05 00:00:00.000 Принтер 5


Получилось:
Date Product Pack RunningTotal2018-01-01 00:00:00.000 Принтер 1 12018-01-02 00:00:00.000 Компьютер 2 22018-01-03 00:00:00.000 Принтер 3 42018-01-04 00:00:00.000 Принтер 4 82018-01-05 00:00:00.000 Принтер 5 13
Нужно так, добавить на каждую дату сумму итогов по каждому продукту:

Date Product Pack RunningTotal2018-01-01 00:00:00.000 Принтер 1 12018-01-02 00:00:00.000 Принтер 0 12018-01-02 00:00:00.000 Компьютер 2 22018-01-03 00:00:00.000 Принтер 3 42018-01-03 00:00:00.000 Компьютер 0 22018-01-04 00:00:00.000 Компьютер 0 22018-01-04 00:00:00.000 Принтер 4 82018-01-05 00:00:00.000 Компьютер 0 22018-01-05 00:00:00.000 Принтер 5 13
...
Рейтинг: 0 / 0
Накопительный итог
    #39715484
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Накопительный итог
    #39715547
iiyama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не, он нарастающий итог итак считает
ему надо на каждый день считать, т.е добавить таблицу календарь
типа ..
Код: 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.
declare @Calendar table ([Date] date)
insert @Calendar values('20180101'),('20180102'),('20180103'),('20180104'),('20180105'),('20180106')
------------
declare @tbl table([Date] date, Product nvarchar(20), Pack int)
insert into @tbl values('20180101','Printer',1),
				('20180102','Computer',2),
				('20180103','Printer',3),
				('20180104','Printer',4),
				('20180105','Printer',5)

;with Products AS
(
 select Product from @tbl group by Product

)

select T0.Date, T0.Product, ISNULL(T1.Pack,0) AS  Pack, SUM(ISNULL(T1.Pack,0)) OVER(PARTITION BY T0.Product ORDER BY T0.date  rows between unbounded preceding and current row) AS [RunningTotal]
from 
(
select C.Date, P.Product 
from Products P cross join @Calendar C
)T0
	LEFT JOIN @tbl T1 ON T0.Date=T1.Date AND T0.Product=T1.Product
order by 1,2
...
Рейтинг: 0 / 0
Накопительный итог
    #39715571
ondorsal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iiyama,
Спасибо! Нужно было именно это.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Накопительный итог
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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