Группировка по дате не работает должным образом - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть четыре столбца: ссылка, дата, сумма и промежуточный итог, и у меня более одной записи за один день, и я пытаюсь сгруппировать по дате, поэтому я вижу только одну дату со всеми суммами и промежуточным итогом.

В основном я пытался сгруппировать их по-разному, но это не сработало так, как я ожидал.

    SELECT [REF], [DATE], [AMOUNT], SUM(AMOUNT) OVER (PARTITION BY [DATE] ORDER BY [REF]) AS 'Running Total' FROM stageRecords
                WHERE [Accounts] != ''
                GROUP BY [REF], [DATE], [AMOUNT]

как выглядят некоторые данные:

ref    -    date  -    amount  -  running total    
1283    2018-04-23    -6769.13    338.46   
1284    2018-04-23   -338.46      5.6843418860808E-14  
109     2018-05-22    12328.58    12328.58   
110     2018-05-22    616.43      12945.01    
501     2018-05-22   -12328.58    616.43

Хотелось бы видеть записи с одной датой с подсчитанной суммой и промежуточным итогом.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Вы, кажется, хотите:

SELECT sr.[DATE],
       SUM(SUM(AMOUNT)) OVER (ORDER BY [DATE]) AS Running_Total
FROM stageRecords sr
WHERE Accounts <> ''
GROUP BY [DATE]
ORDER BY [DATE];

Если вам нужна одна строка на дату, это должен быть единственный столбец в GROUP BY.

0 голосов
/ 17 апреля 2019

Удалите Amount из агрегации и вместо этого используйте SUM(AMOUNT) в качестве количества, которое будет суммироваться с секундой SUM, используемой в качестве аналитической функции.

SELECT
    [REF],
    [DATE],
    SUM(SUM(AMOUNT)) OVER (PARTITION BY [DATE] ORDER BY [REF]) AS 'Running Total'
FROM stageRecords
WHERE [Accounts] != ''
GROUP BY [REF], [DATE];

Вышеприведенный запрос имеет смысл,потому что аналитические функции устанавливаются на основе и оцениваются после агрегации GROUP BY.Когда агрегация заканчивается, доступна SUM(AMOUNT), и нет никаких причин, по которым мы не можем использовать ее в качестве входных данных для аналитической функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...