Here is the stored procedure:
CREATE PROCEDURE FootTraffic_test
@Store VARCHAR(35),
@StartDate Datetime,
@EndDate Datetime
AS
SET @StartDate =
CASE
WHEN datepart(dw, convert(datetime, @StartDate)) = 2
THEN @StartDate
WHEN datepart(dw, convert(datetime, @StartDate)) between 3 and 5
THEN DateAdd(dd, -1*(datepart(dw, convert(datetime, @StartDate))-2), @StartDate)
WHEN datepart(dw, convert(datetime, @StartDate)) between 6 and 7
THEN DateAdd(dd, 9 - datepart(dw, convert(datetime, @StartDate)), @StartDate)
WHEN datepart(dw, convert(datetime, @StartDate)) = 1
THEN DateAdd(dd, 1, @StartDate)
END
--SET @EndDate = DateAdd(wk, 1, @StartDate)
SET @EndDate =
CASE
WHEN datepart(dw, convert(datetime, @EndDate)) = 1
THEN @EndDate
WHEN datepart(dw, convert(datetime, @EndDate)) between 3 and 4
THEN DateAdd(dd, -1*(datepart(dw, convert(datetime, @EndDate))-1), @EndDate)
WHEN datepart(dw, convert(datetime, @EndDate)) between 5 and 7
THEN DateAdd(dd, 8 - datepart(dw, convert(datetime, @EndDate)), @EndDate)
WHEN datepart(dw, convert(datetime, @EndDate)) = 2
THEN DateAdd(dd, -1, @EndDate)
END
Select
store,
SUM(count) as COUNT,
convert(datetime,convert(varchar(12),actualtime,101)) as actualtime,
Hours
from
(
Select
store,
count,
actualtime,
case
--when time < '19000101 08:00:00.000' then '[A-Before8]'
when time between '19000101 08:00:00.001' and '19000101 9:00:00.000' then 'A 8-9am'
when time between '19000101 9:00:00.001' and '19000101 10:00:00.000' then 'B 9-10am'
when time between '19000101 10:00:00.001' and '19000101 11:00:00.000' then 'C 10-11am'
when time between '19000101 11:00:00.001' and '19000101 12:00:00.000' then 'D 11-12pm'
when time between '19000101 12:00:00.001' and '19000101 13:00:00.000' then 'E 12-1pm'
when time between '19000101 13:00:00.001' and '19000101 14:00:00.000' then 'F 1-2pm'
when time between '19000101 14:00:00.001' and '19000101 15:00:00.000' then 'G 2-3pm'
when time between '19000101 15:00:00.001' and '19000101 16:00:00.000' then 'H 3-4pm'
when time between '19000101 16:00:00.001' and '19000101 17:00:00.000' then 'I 4-5pm'
when time between '19000101 17:00:00.001' and '19000101 18:00:00.000' then 'J 5-6pm'
when time between '19000101 18:00:00.001' and '19000101 19:00:00.000' then 'K 6-7pm'
when time between '19000101 19:00:00.001' and '19000101 20:00:00.000' then 'L 7-8pm'
--when time > '19000101 20:00:00.001' then '[N-After8]'
else 'OUTSIDE HOURS' end as Hours
from
(select store,count,time as actualtime, dateadd(dd,datediff(d,time,'19000101'),time) as time
from
people_counter
where
store = @Store and
time between @Startdate and @EndDate)dt
)dt1
group by store,convert(datetime,convert(varchar(12),actualtime,101)),Hours
Thank you,
Shal