2014-05-07 44 views
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條註冊的記錄爲整個集合。我需要知道如何編寫一個查詢來計算特定日期的這些計數,例如4/20/2014。在那一天,我想讓查詢返回5個申請人,2個接受,0個註冊。 任何幫助,將不勝感激。

+0

你想讓計數成爲前幾天的總計,還是隻對那一天的活動感興趣? –

+0

我正在尋找基於給定日期的前幾天所有日期的總計。我根據日期總結了部分記錄的複雜性。例如,2014年4月的某個日期生成的任何查詢都不應顯示任何已註冊的計數,因爲這些事件發生在2014年5月。 – user3613294

回答

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。你可以隨意改變狀態,只要你喜歡。

希望得到這個幫助。

相關問題