Из серии счетов с датой, как я могу агрегировать их по месяцам счетов и предыдущим месяцам счетов? - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть таблица с счетами разных клиентов на строку.Я хотел бы получить с помощью SQL (или SQL HANA) общую сумму не только всех счетов-фактур за тот же месяц и клиента, но и получить в другом столбце сумму за последний месяц.

Let:

Customer, Invoice Date(YearMonth), Amount
1, 201812, 12
1, 201811, 10
1, 201811, 15
1, 201811, 20
1, 201808, 12
1, 201807, 66
1, 201804, 12
1, 201801, 12    
2, ...
...

=>

Customer, YearMonth Invoices, Total Month, Total Previous Month(YM -1 )
1, 201812, 12, 45
1, 201811, 45, 0 
1, 201808, 12, 66 
1, 201807, 66, 0
1, 201804, 12, 0
1, 201801, 12, 0
2, ..

Примечание: у меня также есть точная дата счета, а не только YearMonth

1 Ответ

0 голосов
/ 06 февраля 2019

Следующий SQLScript обеспечивает желаемое решение при выполнении в базе данных HANA

Он включает в себя оператор подвыбора и использование оконных функций, таких как SUM с предложением Partition By

Кроме того, я использую дату для строки и функции преобразования строки в дату и функция add_months

select distinct
    Customer,
    InvoiceDate,
    SUM(Amount) OVER (PARTITION BY Customer, InvoiceDate) as TotalCurrent,
    (
        select sum(i.Amount) 
        from Invoices i
        where i.Customer = j.Customer and i.InvoiceDate = TO_CHAR( add_months(TO_DATE(concat(j.InvoiceDate,'01')), -1) ,'YYYYMM')
    ) as PrevTotal
from Invoices j

enter image description here

...