Получить сумму столбца после и до даты? - PullRequest
0 голосов
/ 26 сентября 2018

Мне нужно получить сумму количеств после и до даты из таблицы.

Вот что я пробовал:

select location_id, t1.product_id, sum(t1.quantity) as open, 
       t2.product_id as t2_p,sum(t2.quantity) as current
from (select id, location_id, product_id, quantity
      from stock_history 
      where date::date<='2018-09-23') t1
FULL OUTER JOIN (select id, product_id, quantity
                 from stock_history 
                 where date::date>'2018-09-23') t2
    ON t1.product_id = t2.product_id
group by location_id, t1.product_id;

Ответы [ 3 ]

0 голосов
/ 26 сентября 2018

Используйте выражения case для условного агрегирования:

select id, location_id, product_id,
       sum(case when date::date <= '2018-09-23' then quantity end),
       sum(case when date::date >  '2018-09-23' then quantity end)
from stock_history
group by id, location_id, product_id,
0 голосов
/ 26 сентября 2018

Я не думаю, что вам нужно присоединиться там.Может быть полезно предложение агрегатов FILTER:

SELECT location_id,
       product_id,
       sum(quantity) FILTER (WHERE date::date <= '2018-09-23') AS open,
       sum(quantity) FILTER (WHERE date::date >  '2018-09-23') AS current
FROM stock_history
GROUP BY location_id, product_id;
0 голосов
/ 26 сентября 2018

Использовать условное агрегирование

select location_id, product_id,
    sum(case when date::date>'2018-09-23' then quantity end) as current,
    sum(case when date::date<='2018-09-23' then quantity end) as open
from stock_history
group by location_id, product_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...