Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SUM() OVER(). Почему из положительных значений получаются отрицательные? / 3 сообщений из 3, страница 1 из 1
11.02.2019, 12:42
    #39772159
Oleg_SQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SUM() OVER(). Почему из положительных значений получаются отрицательные?
Разве считаются не все предыдущие суммы до текущей?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
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: )
...
Рейтинг: 0 / 0
11.02.2019, 12:44
    #39772160
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SUM() OVER(). Почему из положительных значений получаются отрицательные?
Oleg_SQL,

так минус уберите
...
Рейтинг: 0 / 0
11.02.2019, 12:45
    #39772161
Oleg_SQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SUM() OVER(). Почему из положительных значений получаются отрицательные?
TaPaK,

блин... Спасибо )))
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SUM() OVER(). Почему из положительных значений получаются отрицательные? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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