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

Откуда:
Сообщений: 8
Привет! Помогите задачку решить. что-то я туплю

есть таблица T
в ней есть столбцы
month day num

Пример такой таблицы:

month day num
jan 1 4
jan 2 5
jan 3 67
jan 4 76
jan 5 85

надо выести month day и К
где К - это сумма всех чисел из num, дата которых меньше или равна текущей (нарастающий итог)
то есть получим

month day k
jan 1 4
jan 2 9
jan 3 76
jan 4 152
jan 5 237
на ms sql
7 ноя 12, 15:25    [13433704]     Ответить | Цитировать Сообщить модератору
 Re: Помогите задачку решить плиз  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
тут что-то было на эту тему
7 ноя 12, 15:32    [13433777]     Ответить | Цитировать Сообщить модератору
 Re: Помогите задачку решить плиз  [new]
trew
Member

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

DECLARE @tab TABLE (m varchar(10), d int, num int)
INSERT INTO @tab (m, d, num) VALUES ('jan', 1, 4)
INSERT INTO @tab (m, d, num) VALUES ('jan', 2, 5)
INSERT INTO @tab (m, d, num) VALUES ('jan', 3, 65)
INSERT INTO @tab (m, d, num) VALUES ('jan', 4, 76)
INSERT INTO @tab (m, d, num) VALUES ('jan', 5, 85)
INSERT INTO @tab (m, d, num) VALUES ('jan', 6, 14)
INSERT INTO @tab (m, d, num) VALUES ('jan', 7, 3)

SELECT    
    *,
 (SELECT SUM(t2.num) FROM @tab t2 WHERE t1.d >=t2.d) itog
FROM @tab t1
7 ноя 12, 15:37    [13433840]     Ответить | Цитировать Сообщить модератору
 Re: Помогите задачку решить плиз  [new]
Dinar_Diego
Member

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

я вот так решил, додумался :)

select pc1.code, sum(pc2.speed)
from PC as PC1
JOIN PC as PC2
ON (PC1.code>=PC2.code)
group by pc1.code
order by pc1.code
7 ноя 12, 15:53    [13433986]     Ответить | Цитировать Сообщить модератору
 Re: Помогите задачку решить плиз  [new]
iap
Member

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

а версия-то, небось, 2012?
7 ноя 12, 15:59    [13434057]     Ответить | Цитировать Сообщить модератору
 Re: Помогите задачку решить плиз  [new]
Добрый Э - Эх
Guest
Dinar_Diego, sum(<поле, по которому считаем накопительный итог>) over(order by <нужный критерий сортировки>) as slide_sum
7 ноя 12, 17:13    [13434749]     Ответить | Цитировать Сообщить модератору
 Re: Помогите задачку решить плиз  [new]
Добрый Э - Эх
Guest
trew,

лучше уж так пробуй:
DECLARE @tab TABLE (m varchar(10), d int, num int)
INSERT INTO @tab (m, d, num) VALUES ('jan', 1, 4)
INSERT INTO @tab (m, d, num) VALUES ('jan', 2, 5)
INSERT INTO @tab (m, d, num) VALUES ('jan', 3, 65)
INSERT INTO @tab (m, d, num) VALUES ('jan', 4, 76)
INSERT INTO @tab (m, d, num) VALUES ('jan', 5, 85)
INSERT INTO @tab (m, d, num) VALUES ('jan', 6, 14)
INSERT INTO @tab (m, d, num) VALUES ('jan', 7, 3)

select t.*, sum(num) over(order by m,d) as slide_sum
  from @tab t

чем за зря насиловать сервер пустой работой.

З.Ы.
Правда, потребуется версия 2012:
select @@version
Microsoft SQL Server 2012 - 11.0.2100.60 (X64) Feb 10 2012 19:39:15 
Copyright (c) Microsoft Corporation 
Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
7 ноя 12, 17:16    [13434776]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить