Tsql 事实记录中的多个日期
我有一个事实表,跟踪特定人群的多个动作和日期。我很难创建一个查询来返回这个表的预期结果集。以下是此表的示例:Tsql 事实记录中的多个日期,tsql,fact,Tsql,Fact,我有一个事实表,跟踪特定人群的多个动作和日期。我很难创建一个查询来返回这个表的预期结果集。以下是此表的示例: Record applicant_count applicant_date accepted_count accepted_date registered_count registered_date 1 1 3 03/01/2014 2 1 2 02/01/2014
Record applicant_count applicant_date accepted_count accepted_date registered_count registered_date
1 1 3 03/01/2014
2 1 2 02/01/2014 1 3 03/01/2014 1 5 05/05/2014
3 1 1 01/01/2014 1 5 05/01/2014 1 5 05/01/2014
4 1 2 02/01/2014 1 4 04/15/2014
5 1 4 04/01/2014
全套共有5条记录,5份申请,3份接受,2份注册记录。我需要知道如何编写查询,以计算特定日期(例如2014年4月20日)的这些计数。在那一天,我希望查询返回5个申请人,2个被接受,0个注册。
任何帮助都将不胜感激
查看您的样本数据,我不确定基于日期对记录进行分组和计数的条件是什么 这是一个完整的工作示例,展示了如何在聚合函数中添加
过滤器条件:
DECLARE @DataSource TABLE
(
[Record] TINYINT
,[applicant_count] TINYINT
,[applicant_date] DATETIME2
,[accepted_count] TINYINT
,[accepted_date] DATETIME2
,[registered_count] TINYINT
,[registered_date] DATETIME2
)
INSERT INTO @DataSource ([Record], [applicant_count], [applicant_date], [accepted_count], [accepted_date], [registered_count], [registered_date])
VALUES (1, 11, '03/01/2014', NULL, NULL, NULL, NULL)
,(2, 12, '02/01/2014', 12, '03/01/2014', 11, '05/05/2014')
,(3, 13, '04/05/2014', 13, '05/01/2014', 10, '05/01/2014')
,(4, 14, '02/01/2014', 11, '04/05/2014', NULL, NULL)
,(5, 15, '04/05/2014', NULL, NULL, NULL, NULL)
DECLARE @Date DATETIME2 = '4/20/2014'
SELECT SUM(IIF([applicant_date] = '4/05/2014', [applicant_count], 0)) AS [applicant_date]
,SUM(IIF([applicant_date] = '4/05/2014', [accepted_count], 0)) AS [accepted_count]
,SUM(IIF([applicant_date] = '4/05/2014', [registered_count], 0)) AS [registered_count]
FROM @DataSource
注意总和中的条件
:
IIF([applicant_date] = '4/05/2014', [applicant_count], 0)
这意味着,如果日期相等,我们将对结果求和,如果不相等,则添加0
。你可以随意改变条件
希望这有帮助。您希望计数是前几天的运行总数,还是只对该特定日期的活动感兴趣?我希望根据给定日期获得前几天的运行总数。对我来说,根据日期总结部分记录的复杂性。例如,为2014年4月的日期生成的任何查询都不应显示任何已注册的计数,因为这些事件发生在2014年5月。