gpt4 book ai didi

c# - 通过 StoredProcedure 进行每日/每周/每月记录计数搜索

转载 作者:行者123 更新时间:2023-11-30 12:36:51 25 4
gpt4 key购买 nike

使用 MS SQL Server。我创建了一个名为 SP_Get_CallsLogged 的存储过程。

我有一个名为 TRN_Call 的表,它有一个名为 CallTime 的列,这是一个 DateTime。

我的应用程序中有一个网页,用户可以在其中输入:-

  1. 开始日期(日期时间)

  2. 结束日期(日期时间)

  3. Period(每日/每周/每月)(varchar)(来自 DropDownList)

我想根据用户在下拉列表。

例如

StartDate ='1/18/2010 11:10:46 AM'
EndDate ='1/25/2010 01:10:46 AM'
Period =Daily

所以上述日期(StartDate+EndDate)之间的记录计数应该以某种方式出现,以便我可以分别引用这些计数,即以下内容:-

Date 1/18/2010 Records Found 5
Date 1/19/2010 Records Found 50
Date 1/20/2010 Records Found 15
Date 1/21/2010 Records Found 32
Date 1/22/2010 Records Found 12
Date 1/23/2010 Records Found 15
Date 1/24/2010 Records Found 17
Date 1/25/2010 Records Found 32

并将这些计数发送到 Web 应用程序,以便随后可以在 Crystal Reports 中列出这些计数。

最佳答案

我会编辑您的存储过程以传递在您的网页中选择的开始日期和结束日期,以便您可以将它们包含在 WHERE 子句中。

-- Daily
SELECT CallTime, COUNT(*) AS 'Records Found'
FROM TRN_Call
WHERE CallTime BETWEEN @StartDate AND @EndDate
GROUP BY CallTime

每周可能非常复杂。

如果你检查这个link您将看到一个功能(下方),您可以使用它来帮助您获得每周结果

例如所以创建下面的函数

create function FiscalWeek (@startMonth varchar(2), @myDate datetime)  
returns int
as
begin
declare @firstWeek datetime
declare @weekNum int
declare @year int
set @year = datepart(year, @myDate)+1
--Get 4th day of month of next year, this will always be in week 1
set @firstWeek = convert(datetime, str(@year)+@startMonth+'04', 102)
--Retreat to beginning of week
set @firstWeek = dateadd(day, (1-datepart(dw, @firstWeek)), @firstWeek)
while @myDate < @firstWeek --Repeat the above steps but for previous year
begin
set @year = @year - 1
set @firstWeek = convert(datetime, str(@year)+@startMonth+'04', 102)
set @firstWeek = dateadd(day, (1-datepart(dw, @firstWeek)), @firstWeek)
end
set @weekNum = (@year*100)+((datediff(day, @firstweek, @myDate)/7)+1)
return @weekNum
end

现在,您应该能够运行下面的代码,它应该按周分组。要在日、周或年之间进行选择,您还必须将用户选择的时间段传递给您的存储过程。

(ps. 还没抽出时间)

SELECT dbo.FiscalWeek('04', CallTime), dbo.FiscalWeek('04', CallTime)%100 ,  COUNT(*) AS 'Records Found - Weekly'
FROM TRN_Call
WHERE CallTime BETWEEN @StartDate AND @EndDate
GROUP BY dbo.FiscalWeek('04', CallTime), dbo.FiscalWeek('04', CallTime)%100

关于c# - 通过 StoredProcedure 进行每日/每周/每月记录计数搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2452984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com