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

Откуда: Khabarovsk
Сообщений: 18
Разве считаются не все предыдущие суммы до текущей?

DECLARE @Tbl TABLE (id INT IDENTITY(1, 1), _clientId INT, _date DATE, _sum INT);

INSERT @Tbl VALUES
  (1, '01.02.2019', 20), (1, '02.02.2019', 50), (1, '02.02.2019', 80), (1, '01.01.2019', 100), (1, '01.01.2019', 90), 
  (1, '01.01.2019', 40), (1, '01.01.2019', 30), (1, '03.02.2019', 70), (1, '07.02.2019', 60), (1, '07.02.2019', 10),
  (2, '12.02.2019', 180), (2, '12.02.2019', 190), (2, '13.02.2019', 130), (2, '01.02.2019', 200), (2, '02.02.2019', 140), 
  (2, '03.02.2019', 150), (2, '08.03.2019', 170), (2, '11.02.2019', 160), (2, '17.02.2019', 120), (2, '17.02.2019', 110);


SELECT _clientId,
       id,
       _date,
       _sum,        
      -SUM(_sum) OVER(PARTITION BY _clientId ORDER BY _date, id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS _RowsUnPredAndCurr 
  FROM @Tbl
  ORDER BY _clientId, _date, id;




_clientId id _date _sum _RowsUnPredAndCurr
----------- ----------- ---------- ----------- ------------------
1 4 2019-01-01 100 -100
1 5 2019-01-01 90 -190
1 6 2019-01-01 40 -230
1 7 2019-01-01 30 -260
1 1 2019-02-01 20 -280
1 2 2019-02-02 50 -330
1 3 2019-02-02 80 -410
1 8 2019-02-03 70 -480
1 9 2019-02-07 60 -540
1 10 2019-02-07 10 -550
2 14 2019-02-01 200 -200
2 15 2019-02-02 140 -340
2 16 2019-02-03 150 -490
2 18 2019-02-11 160 -650
2 11 2019-02-12 180 -830
2 12 2019-02-12 190 -1020
2 13 2019-02-13 130 -1150
2 19 2019-02-17 120 -1270
2 20 2019-02-17 110 -1380
2 17 2019-03-08 170 -1550

(строк обработано: 20)


----------------------------------------------------------------------------------
Microsoft SQL Server 2017 (RTM-CU10) (KB4342123) - 14.0.3037.1 (X64)
Jul 27 2018 09:40:27
Copyright (C) 2017 Microsoft Corporation
Enterprise Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: )
11 фев 19, 12:42    [21806277]     Ответить | Цитировать Сообщить модератору
 Re: SUM() OVER(). Почему из положительных значений получаются отрицательные?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5891
Oleg_SQL,

так минус уберите
11 фев 19, 12:44    [21806278]     Ответить | Цитировать Сообщить модератору
 Re: SUM() OVER(). Почему из положительных значений получаются отрицательные?  [new]
Oleg_SQL
Member

Откуда: Khabarovsk
Сообщений: 18
TaPaK,

блин... Спасибо )))
11 фев 19, 12:45    [21806279]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить