0

我有一个事实表,可以跟踪特定人群的多项行动和日期。我很难创建一个返回我期望该表的结果集的查询。这是此表的示例:

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 个注册。任何帮助,将不胜感激。

4

1 回答 1

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. 您可以随意更改条件。

希望这有帮助。

于 2014-05-07T19:14:23.907 回答