Sql 在两个日期之间搜索周/月记录计数(数字)和周/月的开始日期+结束日期(日期时间)
我有一个与我之前发布的问题相关的问题:- 我想有每周和每月的电话计数,每天的问题得到解决 问题编号@1:每周呼叫计数以及每周的开始日期和结束日期 我已经在下面提到的查询中搜索了一周的开始日期和结束日期,包括他们各自的通话次数。但问题是,我无法在一个表中得到结果,尽管我使用了临时表telletable+telletable2。请在这方面帮助我 注意:表创建被注释为多次执行Sql 在两个日期之间搜索周/月记录计数(数字)和周/月的开始日期+结束日期(日期时间),sql,sql-server,search,temp-tables,Sql,Sql Server,Search,Temp Tables,我有一个与我之前发布的问题相关的问题:- 我想有每周和每月的电话计数,每天的问题得到解决 问题编号@1:每周呼叫计数以及每周的开始日期和结束日期 我已经在下面提到的查询中搜索了一周的开始日期和结束日期,包括他们各自的通话次数。但问题是,我无法在一个表中得到结果,尽管我使用了临时表telletable+telletable2。请在这方面帮助我 注意:表创建被注释为多次执行 --CREATE TABLE #TempTable(StartDate datetime,EndDate datetime,C
--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
我相信下面三个简单的查询就足以满足您的需要 每日 周报 月刊
查找记录月份的简单查询。。。。。
选择发票号、创建日期、创建月份、计数发票号、从销售中计数发票号,其中公司id='.10'和status=Approved AND yearcreated\u at=yearcurdate group by monthcreated\u atenter code在此如果您为每个用例发布一些示例输入和输出,您可能会得到更好的帮助。@Lieven:我之前已经完成了您的回答,但我的要求不仅仅是搜索每周或每月的计数。我必须显示开始日期和结束日期,包括特定范围的计数。周:-开始日期结束日期计数2010年1月15日2010年1月22日2010年1月21日2010年1月22日2010年1月29日73上述结果将以单独的结果出现,我想将它们合并并放入单个结果中。我的意思是,通过我的查询,这些结果在不同的结果窗口中一一出现。每月:-开始日期结束日期2010年1月1日2010年2月118日2010年2月1日2010年3月84
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)