У меня есть вопрос в связи с ранее заданным мной вопросом: -
Поиск по количеству записей за день / неделю / месяц с помощью StoredProcedure
Я хочу, чтобы количество вызовов еженедельно и ежемесячно решалось ежедневно.
НОМЕР ВЫПУСКА @ 1: еженедельное количество вызовов, а также даты начала и окончания недели
Я искал даты начала и окончания недели, включая их индивидуальное количество вызовов, а также в указанном ниже запросе. Но проблема в том, что я не смог получить результат в одной таблице, хотя я использовал временные таблицы (# TempTable + # TempTable2). Пожалуйста, помогите мне в этом.
ПРИМЕЧАНИЕ. Создание таблицы прокомментировано как выполнение более одного раза.
--CREATE TABLE #TempTable(StartDate datetime,EndDate datetime,CallCount numeric(18,5))
--CREATE TABLE #TempTable2(StartDate datetime,EndDate datetime,CallCount numeric(18,5))
DECLARE @StartDate datetime,@EndDate datetime,@StartDateTemp1 datetime,@StartDateTemp2 datetime,@EndDateTemp datetime,@Period varchar(50);
SET @StartDate='1/1/2010'; SET @EndDate='2/28/2010';
SET @StartDateTemp1=@StartDate; SET @StartDateTemp2=DATEADD(dd, 7, @StartDate );
SET @Period='Weekly';
IF (@Period = 'Weekly')
BEGIN
WHILE ((@StartDate <= @StartDateTemp1) AND (@StartDateTemp2 <= @EndDate))
BEGIN
IF((@StartDateTemp1 < @StartDateTemp2 ) AND (@StartDateTemp1 != @StartDateTemp2) )
BEGIN
SELECT
convert(varchar, @StartDateTemp1, 106) AS 'Start Date',
convert(varchar, @StartDateTemp2, 106) AS 'End Date',
COUNT(*) AS 'Call Count'
FROM TRN_Call
WHERE (CallTime >= @StartDateTemp1 AND CallTime <= @StartDateTemp2 );
END
SET @StartDateTemp1 = DATEADD(dd, 7, @StartDateTemp1);
SET @StartDateTemp2 = DATEADD(dd, 7, @StartDateTemp2);
END
END
НОМЕР ВЫПУСКА @ 2: ежемесячный счетчик вызовов, даты начала и окончания недели
В этом случае у меня тот же поиск, но мне придется искать количество вызовов плюс начальную и конечную даты месяца. Пожалуйста, помогите мне в этом также.
DECLARE @StartDate datetime,@EndDate datetime,@StartDateTemp1 datetime,@StartDateTemp2 datetime,@EndDateTemp datetime,@Period varchar(50);
SET @StartDate='1/1/2010'; SET @EndDate='4/1/2010'; SET @StartDateTemp1=@StartDate;
--SET @StartDateTemp2=@StartDate;
SET @StartDateTemp2=DATEADD(mm, 1, @StartDate );
SET @Period='Monthly';
IF (@Period = 'Monthly')
BEGIN
WHILE ((@StartDate <= @StartDateTemp1) AND (@StartDateTemp2 <= @EndDate))
BEGIN
IF((@StartDateTemp1 < @StartDateTemp2 ) AND (@StartDateTemp1 != @StartDateTemp2) )
BEGIN
SELECT
convert(varchar, @StartDateTemp1, 106) AS 'Start Date',
convert(varchar, @StartDateTemp2, 106) AS 'End Date',
COUNT(*) AS 'Call Count'
FROM TRN_Call
WHERE (CallTime >= @StartDateTemp1 AND CallTime <= @StartDateTemp2 );
END
SET @StartDateTemp1 = DATEADD(mm, 1, @StartDateTemp1);
SET @StartDateTemp2 = DATEADD(mm, 1, @StartDateTemp2);
END
END