I have a data set as such:
Date Value Type 2020-06-01 103 B 2020-06-01 100 A 2020-06-01 133 A 2020-06-11 150 A 2020-07-01 1000 A 2020-07-21 104 A 2020-07-25 140 A 2020-07-28 1600 A 2020-08-01 100 A
Like this:
Type ISHIGH A 1 B 0
Here’s the query i tried,
select type, case when sum(value) > 10 then 1 else 0 end as total_usage from table_a where (select sum(value) as usage from tableA where date = max(date)-7) group by type, date
This is clearly not right. What is a simple way to do this?
Advertisement
Answer
Find the max date by type
. Then used it to find last 7
days and sum()
the value.
with cte as ( select [type], max([Date]) as MaxDate from tableA group by [type] ) select c.[type], sum(a.Value), case when SUM(a.Value) > 1000 then 1 else 0 end as ISHIGH from cte c inner join tableA a on a.[type] = c.[type] and a.[Date] >= DATEADD(DAY, -7, c.MaxDate) group by c.[type]