我有一个事实表,可以跟踪特定人群的多个操作和日期。我很难创建一个返回结果集的查询,我期望这个表。以下是此表的示例:
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个注册。 任何帮助,将不胜感激。
答案 0 :(得分:0)
查看您的示例数据,我不确定根据日期对记录进行分组和计数的条件是什么。
这是完整的工作示例,展示了如何在聚合函数中添加filter
条件:
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
注意SUM
:
IIF([applicant_date] = '4/05/2014', [applicant_count], 0)
这意味着,如果日期等于我们正在对结果求和,如果没有,则添加0
。你可以自由地改变你喜欢的状态。
希望得到这个帮助。