Как фильтровать по одному и тому же столбцу дважды в SQL? - PullRequest
0 голосов
/ 30 мая 2018

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

Что-то вроде:

 SELECT categories, SUM(values) 
 FROM table 
 group by categories
 having SUM(values) = 0 WHEN dates between w AND x 
 AND having SUM(values) > 10000 WHEN dates between y and z

Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Вы можете сделать следующее (SUM только значения, соответствующие условию IIF):

SELECT categories, SUM(values) 
FROM table 
GROUP BY categories
HAVING SUM(IIF(dates BETWEEN w AND x, values, 0)) = 0 
AND SUM(IIF(dates BETWEEN y AND z, values, 0)) > 10000 
0 голосов
/ 30 мая 2018

Я думаю, вы хотите условное агрегирование:

 select categories, sum(values) 
 from table 
 group by categories
 having sum(case when dates between w and x then values else 0 end) = 0 and
        sum(case when dates between y and z then values else 0 end) > 10000 ; 
...