我有一个日期时间字段和一个网络字段。 Sat Count 字段由 =IIf(DatePart("w",Fields!DespatchDate.Value)=7,1,0)
我想在给定开始日期和结束日期(通常是一个月)的情况下计算星期六的总数。
我试过 =Sum(IIf(DatePart("w",Fields!DespatchDate.Value)=7,1,0)
但总数是错误的。
我还想计算本月剩余时间的星期六,例如图片中缺少第三个星期六。
我还想在星期六做一个总的网络。
你能帮我指明方向吗?我可以在 SQL 或 SSRS 中完成
答案 0 :(得分:0)
考虑到我们没有提供任何输入或所需的输出,我假设您只想计算给定范围内的星期六:
Select COUNT(*), SUM(Net)
FROM table
WHERE Day# = 7 AND Date BETWEEN '2021-02-16' AND '2021-02-23'
答案 1 :(得分:0)
假设您想计算星期六,即使它不是您数据集的一部分,您需要做的是填充给定范围内的所有日期,然后将其加入您的基本数据集。
这将确保它涵盖一周中的所有天数,而不管在该日期/天发生的调度事件如何。
以下是一些可能有助于您入门的 SQL 代码。
declare @startdate date = '2021-02-01'
declare @enddate date = '2021-02-28'
if OBJECT_ID ('tempdb..#dates') is not null
drop table #dates
;WITH mycte AS
(
SELECT CAST(@startdate AS DATETIME) DateValue
UNION ALL
SELECT DateValue + 1
FROM mycte
WHERE DateValue + 1 < @enddate
)
SELECT DateValue into #dates
FROM mycte
OPTION (MAXRECURSION 0)
select
d.DateValue
, datepart(weekday,d.DateValue) as day_no
,case when datepart(weekday,d.DateValue) = 7 then isnull(t.net,0) else 0 end as sat_net
,case when datepart(weekday,d.DateValue) = 1 then isnull(t.net,0) else 0 end as sun_net
from #dates d
left join your_table t
on d.DateValue = t.some_date
drop table #dates
由于我不知道您需要的输出是什么,因此我无法进一步总结。但你懂的!