首页 > 解决方案 > 表中的 MS Report Builder 最小和最大日期(按记录 ID)

问题描述

我正在使用一个数据库,该数据库存储在特定时间段内与我的雇主接触的个人的记录,他们的记录每 10 天左右更新一次。但数据库不存储他们的初始订婚日期,除非在初始记录中。我需要使用 Microsoft Report Builder 3.0 生成一个表格,其中显示一个人的所有记录和初始参与日期。

这是我的简单 SELECT 查询返回的示例。(它们确实是简单的查询——从一张表中选择大约六个字段,其中一个条件为真。)

客户ID 会议日期 记录创建日期
5678 2019 年 4 月 1 日 2019 年 4 月 4 日
5678 2019 年 4 月 1 日 2019 年 4 月 24 日
5678 2019 年 4 月 1 日 2019 年 5 月 5 日
5678 2019 年 4 月 1 日 2019 年 5 月 25 日
5678 2019 年 4 月 1 日 2019 年 6 月 6 日
5678 2019 年 4 月 1 日 2019 年 6 月 26 日
5678 2020 年 10 月 8 日 2020 年 10 月 10 日
5678 2020 年 10 月 8 日 2020 年 10 月 30 日
5678 2020 年 10 月 8 日 2020 年 11 月 21 日
5678 2020 年 10 月 8 日 2020 年 12 月 1 日
54321 2020 年 7 月 7 日 2020 年 7 月 9 日
54321 2020 年 7 月 7 日 2020 年 7 月 29 日
54321 2020 年 7 月 7 日 2020 年 8 月 8 日
54321 2020 年 7 月 7 日 2020 年 8 月 28 日
54321 2020 年 7 月 7 日 2020 年 9 月 7 日
54321 2020 年 7 月 7 日 2020 年 9 月 27 日

这是我希望结果看起来像的示例。

客户ID 会议日期 记录创建日期 最小创建 最大创建
5678 2019 年 4 月 1 日 2019 年 4 月 4 日 2019 年 4 月 4 日 2019 年 6 月 26 日
5678 2019 年 4 月 1 日 2019 年 4 月 24 日 2019 年 4 月 4 日 2019 年 6 月 26 日
5678 2019 年 4 月 1 日 2019 年 5 月 5 日 2019 年 4 月 4 日 2019 年 6 月 26 日
5678 2019 年 4 月 1 日 2019 年 5 月 25 日 2019 年 4 月 4 日 2019 年 6 月 26 日
5678 2019 年 4 月 1 日 2019 年 6 月 6 日 2019 年 4 月 4 日 2019 年 6 月 26 日
5678 2019 年 4 月 1 日 2019 年 6 月 26 日 2019 年 4 月 4 日 2019 年 6 月 26 日
5678 2020 年 10 月 8 日 2020 年 10 月 10 日 2020 年 10 月 10 日 2020 年 12 月 1 日
5678 2020 年 10 月 8 日 2020 年 10 月 30 日 2020 年 10 月 10 日 2020 年 12 月 1 日
5678 2020 年 10 月 8 日 2020 年 11 月 21 日 2020 年 10 月 10 日 2020 年 12 月 1 日
5678 2020 年 10 月 8 日 2020 年 12 月 1 日 2020 年 10 月 10 日 2020 年 12 月 1 日
54321 2020 年 7 月 7 日 2020 年 7 月 9 日 2020 年 7 月 9 日 2020 年 9 月 27 日
54321 2020 年 7 月 7 日 2020 年 7 月 29 日 2020 年 7 月 9 日 2020 年 9 月 27 日
54321 2020 年 7 月 7 日 2020 年 8 月 8 日 2020 年 7 月 9 日 2020 年 9 月 27 日
54321 2020 年 7 月 7 日 2020 年 8 月 28 日 2020 年 7 月 9 日 2020 年 9 月 27 日
54321 2020 年 7 月 7 日 2020 年 9 月 7 日 2020 年 7 月 9 日 2020 年 9 月 27 日
54321 2020 年 7 月 7 日 2020 年 9 月 27 日 2020 年 7 月 9 日 2020 年 9 月 27 日

通过使用连接客户 ID 和会话日期字段的变量,我能够在 Business Objects 中实现此目标,然后使用这些表达式添加另外两个变量: =Min([Submitted Date]) In ([ConcatenateCustomerSession]) =Max([Submitted Date]) In ([ConcatenateCustomerSession])

有任何想法吗?如果可以的话,我更愿意将其作为计算字段来执行,只是因为我更喜欢表达式而不是 SQL 代码,但在这一点上,我会尽一切努力完成工作。

标签: sqlmaxreportbuilder3.0calculated-fieldmaxdate

解决方案


这在 SQL 内部很简单。在现有的选择语句中添加另外两列

,Min([Record Created Date]) Over (Partition by [Customer ID]) as [Min Created]
,Max([Record Created Date]) Over (Partition by [Customer ID]) as [Max Created]

推荐阅读