У меня есть этот запрос из таблицы Uploads
:
select
Costumer as Customer,
max(Week) as 'Max Week',
count(distinct(POS)) as 'Total POS'
from Uploads
where year = 2022
group by Costumer;
и возвращает это:
Клиент | Максимальная неделя | Всего POS |
---|---|---|
Клиент А | 3 | 65 |
Клиент Б | 5 | 27 |
Клиент С | 3 | 33 |
В этой таблице есть дополнительный столбец с именем Inventory
, и я хочу знать SUM(Inventory)
, но с отфильтрованными ранее неделями.
Например:
Клиент | Максимальная неделя | Всего POS | Инвентарь |
---|---|---|---|
Клиент А | 3 | 65 | 456 |
Клиент Б | 5 | 27 | 123 |
Клиент С | 3 | 33 | 2345 |
Вы можете решить эту проблему, используя Row_Number
вот так
SELECT t.[Total POS],
t.customer,
t.week MaxWeek,
t.SumInventoryPerWeek SumForMaxWeek
FROM (
select
Costumer as Customer,
Week as week,
count(distinct(POS)) as 'Total POS',
SUM(Inventory) SumInventoryPerWeek,
ROW_NUMBER() OVER(PARTITION BY Costumer ORDER BY Week DESC) rw
from Uploads
where year = 2022
group by Costumer,Week
) t
WHERE t.rw=1