sql - 表中的 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 代码,但在这一点上,我会尽一切努力完成工作。
解决方案
这在 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]
推荐阅读
- c# - Connection string is not working while using (data source =.\SQLExpress)
- kotlin - JOOQ: How to add an interface to record class to allow generic insertion of data
- java - Java test for an exception
- r - purrr syntax and map_depth
- javascript - Restructuring this JSON data to be tranformed to a barchart data
- apache - docker 卷,不生成配置文件
- android - 如何使用 Android SDK 删除存储在 AWS S3 存储桶中的文件/对象?
- python - Python SQL 脚本仅将数据帧的最后一行插入到 SQL Server [pyodbc]
- mysql - 更新父键应更改子键(外键)
- c++ - 使用 VS Code 在 C++ 应用程序中查找内存泄漏