【发布时间】:2018-03-23 16:10:28
【问题描述】:
我有一个表,我们称之为记录,其中相关数据是这样组织的:
| Employee | SubmissionDate | FirstReviewDate | SecondReviewDate |
Anne 2017-10-02 2017-10-03 2017-10-10
Bernard 2017-10-03 2017-10-05 2017-10-10
Charlene 2017-10-06 2017-10-09 2017-10-09
Danielle 2017-10-02 2017-10-03 2017-10-09
Anne 2017-10-03 2017-10-03 2017-10-09
员工每次提交时,都会添加一个带有 SubmissionDate 的新条目。该记录稍后被编辑以包含然后进行第一次和第二次审查。
我还有一个名为 Calendar 的日历表,其中包含一个名为 TheDate 的字段,其中包含今年每一天的日期。我想做的是将 SubmissionDate、FirstReviewDate 和 SecondReview 日期与 Calendar.TheDate 相关联,这样我就可以对任何给定日期的所有三个字段进行计数。
我已经尝试了以下代码:
SELECT Employee,
Count(SubmissionDate) AS "Submissions",
Count(FirstReviewDate) AS "First Reviews",
Count(SecondReviewDate) AS "Second Reviews"
FROM Records
LEFT JOIN Calendar ON Records.SubmissionDate = Calendar.TheDate
AND Records.FirstReviewDate = Calendar.TheDate
AND Records.SecondReviewDate = Calendar.TheDate
WHERE TheDate = '2017-10-11'
我尝试过的所有变体都没有输出:
| Employee | Submissions | First Reviews | Second Reviews |
我想要的代码如下所示:
SELECT Employee,
Count(SubmissionDate),
Count(FirstReviewDate),
Count(SecondReviewDate)
FROM ???
WHERE TheDate = '2017-10-03'
在哪里???将是正确的加入。使用所需的代码块(包括 where 子句),对于提供的示例数据,所需的输出将如下所示:
| Employee | Submissions | First Reviews | Second Reviews |
Anne 1 2 0
Bernard 1 0 0
Charlene 0 0 0
Danielle 0 1 0
我不知道如何加入。我已经阅读了许多有关日历表的资源,但这些示例始终包括连接表,每个表都有一个日期标识符。我的问题是我有一张表,其中包含三个需要与 Calendar.TheDate 关联的日期字段。
我正在这样排列我的数据,以便可以在 Qlik Sense 中可视化数据。我希望用户能够从过滤器面板中选择 TheDate 并让它聚合指定日期的所有三个字段(基本上与我的示例代码中的 WHERE 子句相同)。
【问题讨论】:
-
如果您显示示例数据和结果会有所帮助。
-
我的示例数据在顶部,我提到它没有输出。我将尝试编辑帖子以使其更清楚。
-
将需要看到所需的结果,而不是基于您尝试过的结果。
-
我已经更新了我的原始帖子以包含更多示例数据以及所需的输出。我道歉;我回复后才知道你在问什么。让我知道是否还有其他可以添加的内容。
-
根据期望的结果和原始数据......你是怎么想出 Anne 有 2 个第一次审查日期的?
标签: sql-server tsql join calendar qliksense