0

我有一个与我之前发布的这个问题有关的问题:-

通过 StoredProcedure 搜索每日/每周/每月记录计数

我希望每周和每月的通话计数,每天的问题得到解决。

ISSUE NUMBER @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 

ISSUE NUMBER @2:Monthly-basis Count of Calls and Start-Date and End-Date of Week 在这种情况下,我有相同的搜索,但必须搜索呼叫计数加上开始日期和结束日期月。请在这方面帮助我。

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 
4

2 回答 2

1

我相信以下三个简单的查询足以满足您的需求。

日常的

SELECT    [Day] = CAST(CAST(CallTime AS INTEGER) AS DATETIME)
          , [Call Count] = COUNT(*)
FROM      TRN_Call
WHERE     CallTime BETWEEN @StartDate AND @EndDate
GROUP BY  CAST(CAST(CallTime AS INTEGER) AS DATETIME)

每周

SELECT    [Week] = DATEPART(ww, CallTime)
          , [Year] = DATEPART(yy, CallTime)
          , [Call Count] = COUNT(*)
FROM      TRN_Call
WHERE     CallTime BETWEEN @StartDate AND @EndDate
GROUP BY  DATEPART(ww, CallTime), DATEPART(yy, CallTime)

月刊

SELECT    [Month] = DATEPART(mm, CallTime)
          , [Year] = DATEPART(yy, CallTime)
          , [Call Count] = COUNT(*)
FROM      TRN_Call
WHERE     CallTime BETWEEN @StartDate AND @EndDate
GROUP BY  DATEPART(mm, CallTime), DATEPART(yy, CallTime)
于 2010-03-26T12:51:15.370 回答
0

查找记录月份的简单查询..... SELECT invoice_no, created_at,month(created_at) month_no ,count(invoice_no) sale_count FROM sales_invoiceWHERE company_id= ' .10 。' AND status= "Approved" and year(created_at) = year(curdate()) 按月分组(created_at)enter code here

于 2017-10-30T05:22:25.690 回答