示例表:
(列标题)所有人的总面试---(行标题)要求采访
(列标题)本周的访谈次数 - (行值)计算本周安排的所有日期,其状态为:“采访请求”,例如4
(列标题)下周的采访次数 - (行值)计算下周安排的所有状态:“采访请求”,例如6
首先,我想对我的临时桌子进行宣传,似乎我不能使用图片,因为我是新成员。
我也是使用reportbuilder和sql的新手,并且一直试图弄清楚如何计算报告中某些日期范围之间的日期数量。
就像我在临时字段中所说的“本周采访次数”一样,我希望根据日期字段计算本周,之后一周,前一周等的所有日期。然后我计划打破这张桌子,以显示一个人的所有访谈。
我遇到的问题是,会有很多日期跨越不同的月/日。所以我不确定我如何使用DateDiff或其他日期功能来表示这一点,因为该表旨在成为当前访谈的实时表示。
我正在尝试使用报告生成器做什么?如果有的话,任何提示都会很棒,如果没有,那么感谢您花时间看我的问题。
作为请求的数据集字段:
[UserName](用户表),[InterviewStatus](访谈表),[DateUpdated](访谈表)
这些是将在报告中使用的主要内容
答案 0 :(得分:1)
如果您只想计算每个字段的列数,可以使用sql语句COUNT()
,请参阅COUNT()。
您可以执行以下常见查询:
SELECT COUNT(fieldName1), COUNT(fieldName2), ... , COUNT(fieldNamen) FROM <tableName>
同时尝试显示您的代码,以便更明确您的问题。
答案 1 :(得分:0)
您可以使用where子句中的面试表过滤中的泛型select语句,了解当前周开始到下一周结束之间的日期。
如果日期属于当前一周或下一个日期,则两个字段的总和为1。
修改强> 以下示例将给出本周内的日期数。取自another question:
Select InterviewStatus,
Sum(Case when DateUpdated >= DATEADD(dd, -(DATEPART(dw, GETDATE()) -1), GETDATE())
AND DateUpdated < CAST(CONVERT(VARCHAR(10), DATEADD(dd, (8 - DATEPART(dw, GETDATE())), GETDATE()), 120) AS DATETIME)
Then 1
Else 0 end)
as NumberInCurrentWeek
From InterviewTable
Where DateUpdated >= DATEADD(dd, -(DATEPART(dw, GETDATE()) -1), GETDATE())
AND DateUpdated < CAST(CONVERT(VARCHAR(10), DATEADD(dd, (8 - DATEPART(dw, GETDATE())), GETDATE()), 120) AS DATETIME)
Group by InterviewStatus
这只需要根据您的具体情况进行调整。例如,改变8乘7将捕获当前的两周。
然后根据查询生成一个简单的表。