i'm writing query return table of booking data event. i've used sum
aggregate group number of daily bookings. i'd create column cumulative running total.
i can't make query work because (i'm presuming) doesn't aliased column title being included in aggregate function.
please can advise me on best approach make work?
select 'recruitment event' event, cast(ep.creationdate date) 'date of booking', sum(case when ep.creationdate not null 1 else 0 end) 'total bookings', (select sum('total bookings') eventplace ep cast(ep.creationdate date) <= cast(ep.creationdate date)) 'running total' eventplace ep left join eventmodule em on em.eventmoduleno = ep.eventmoduleno em.eventmoduleno = '11111111-abcd-1234-1234-1010101010' group cast(ep.creationdate date) order cast(ep.creationdate date) desc
try this
select [event] = 'recruitment event' , [date of booking] = cast(ep.creationdate date), [total bookings] = count(ep.creationdate), [running total] = sum(count(ep.creationdate)) on (order cast(ep.creationdate date) desc) eventplace ep exists (select * eventmodule em em.eventmoduleno = ep.eventmoduleno , em.eventmoduleno = '11111111-abcd-1234-1234-1010101010') group cast(ep.creationdate date) order cast(ep.creationdate date) desc
count(ep.creationdate)
ignore null values same result sum(case)
you dont have use exists
, should change left join
join
since you're using em.eventmoduleno
in where
statement
sum(count(ep.creationdate)) on ()
give running total of count. use order by
in over
determine order of sum
. since you're ordering cast(ep.creationdate date) desc
can use in over()
Comments
Post a Comment