Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сумма в детализации  [new]
Testor1
Member

Откуда:
Сообщений: 679
Всем привет!

Возможно ли написать селект, который возвращал для каждой новой строки сумму предыдущих значений и текущей строки для заданного столбца?

к примеру
исходная таблица
месяц, бонус
янв, 5
фев, 3
мар, 9

запрос должен вернуть
янв, 5
фев, 8
мар, 17
28 апр 13, 12:45    [14240381]     Ответить | Цитировать Сообщить модератору
 Re: Сумма в детализации  [new]
iap
Member

Откуда: Москва
Сообщений: 47084
SELECT месяц, SUM(бонус)OVER(ORDER BY месяц)[бонус] FROM [исходная таблица]
28 апр 13, 12:48    [14240387]     Ответить | Цитировать Сообщить модератору
 Re: Сумма в детализации  [new]
Testor1
Member

Откуда:
Сообщений: 679
iap,

Для примера

select OrderID, SUM(OrderID) OVER(ORDER BY ORDERID )
from orders


При попытке выполнить получаю ошибку
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'order'.


Что не так ?
28 апр 13, 18:47    [14241009]     Ответить | Цитировать Сообщить модератору
 Re: Сумма в детализации  [new]
так,
Guest
Testor1
Что не так ?

версия сервера, например
28 апр 13, 18:48    [14241015]     Ответить | Цитировать Сообщить модератору
 Re: Сумма в детализации  [new]
iap
Member

Откуда: Москва
Сообщений: 47084
так,
Testor1
Что не так ?

версия сервера, например
, которая не была названа.
Почему бы не SQL 2012 в таком случае?
28 апр 13, 18:53    [14241027]     Ответить | Цитировать Сообщить модератору
 Re: Сумма в детализации  [new]
Testor1
Member

Откуда:
Сообщений: 679
iap,

Пока сижу на 2008 R2. Что такое придумать на нем? Нужно чтобы и производительность не падала при выполнении запроса.

http://stackoverflow.com/questions/10039431/how-can-i-use-sum-over
28 апр 13, 18:56    [14241034]     Ответить | Цитировать Сообщить модератору
 Re: Сумма в детализации  [new]
так,
Guest
iap
так,
пропущено...

версия сервера, например
, которая не была названа.
Почему бы не SQL 2012 в таком случае?


дык, и я ж про это :)
жду что сейчас ТС скажет что у него СКЛ2000, после чего предложить ему устанавливать СКЛ2012,
т.к. ответ ему уже дан !

а в след.раз, начинать задание вопроса с прочьтения рекомендаций
28 апр 13, 18:58    [14241040]     Ответить | Цитировать Сообщить модератору
 Re: Сумма в детализации  [new]
iap
Member

Откуда: Москва
Сообщений: 47084
Testor1,

тут есть FAQ по этому поводу
28 апр 13, 18:59    [14241044]     Ответить | Цитировать Сообщить модератору
 Re: Сумма в детализации  [new]
Testor1
Member

Откуда:
Сообщений: 679
iap
Testor1,

тут есть FAQ по этому поводу


Что лучше ?

select a.OrderID, c.sum_orderid 
from orders a CROSS APPLY (SELECT SUM(OrderId) sum_orderid FROM orders b WHERE b.OrderID <= a.orderid ) c
ORDER BY a.OrderID, c.sum_orderid
28 апр 13, 19:05    [14241050]     Ответить | Цитировать Сообщить модератору
 Re: Сумма в детализации  [new]
Testor1
Member

Откуда:
Сообщений: 679
Testor1,

Пример из FAQ не считает как мне нужно.
Он не учитывает в суммах значение первой строки.
28 апр 13, 19:11    [14241066]     Ответить | Цитировать Сообщить модератору
 Re: Сумма в детализации  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Testor1,

См. http://stackoverflow.com/questions/860966/calculate-a-running-total-in-sqlserver, пример 3.
28 апр 13, 19:45    [14241154]     Ответить | Цитировать Сообщить модератору
 Re: Сумма в детализации  [new]
Testor1
Member

Откуда:
Сообщений: 679
Гость333,

Интересная статья. Спасибо!
28 апр 13, 19:52    [14241179]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить