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月。