2013-04-03 58 views
0

你好以下是一個示例數據。計數/組T-SQL

DateGroupID  StartDate  EndDate 
1    2013-01-01  2013-01-07 
2    2013-01-08  2013-01-14 
3    2013-01-15  2013-01-21 
. 
. 
. 
15    2013-04-01  2013-04-07 

EMPID GroupID  JoinDate   TerminationDate 
1  A   2013-01-01   2013-03-24 
2  B   2013-01-05   NULL 
3  C   2013-01-05   NULL 
4  A   2013-01-05   2013-03-20 
5  B   2013-01-17   NULL 
6  D   2013-02-01   NULL 
7  A   2013-02-24   NULL 
8  A   2013-02-28   NULL 
9  B   2013-03-02   NULL 
10  B   2013-03-12   NULL 
11  C   2013-03-22   NULL 
12  C   2013-03-22   NULL 
13  D   2013-03-26   NULL 
14  D   2013-03-29   NULL 
15  A   2013-04-01   NULL 

我試圖讓數爲員工在此基礎上DateGroupID我選擇誰是在每一天,這組由羣ID ACTIVE。

因此,例如, 如果我選擇DateGroupID = 1(在WHERe子句中,我會假設), 我希望每天在StartDate和EndDate之間獲得ACTIVE用戶數。 所以我的輸出應該像

GROUPID  COUNT  Date 
A   1   2013-01-01 (1 EMP was added to this group on this day) 
B   0   2013-01-01 (NO Emp for this group were active on this day) 
C   0   2013-01-01 (NO Emp for this group were active on this day) 
D   0   2013-01-01 (NO Emp for this group were active on this day) 

A   1   2013-01-02 (NO Emp for this group were added but 1 is active from the past) 
B   0   2013-01-02 (NO Emp for this group were active on this day) 
C   0   2013-01-02 (NO Emp for this group were active on this day) 
D   0   2013-01-02 (NO Emp for this group were active on this day) 

A   1   2013-01-03 (NO Emp for this group were added but 1 is active from the past) 
B   0   2013-01-03 (NO Emp for this group were active on this day) 
C   0   2013-01-03 (NO Emp for this group were active on this day) 
D   0   2013-01-03 (NO Emp for this group were active on this day) 

A   1   2013-01-04 (NO Emp for this group were added but 1 is active from the past) 
B   0   2013-01-04 (NO Emp for this group were active on this day) 
C   0   2013-01-04 (NO Emp for this group were active on this day) 
D   0   2013-01-04 (NO Emp for this group were active on this day) 


A   2   2013-01-05 (1 more Emp was added to this group on this day) 
B   1   2013-01-05 (1 EMP was added to this group on this day) 
C   1   2013-01-05 (1 EMP was added to this group on this day) 
D   0   2013-01-05 (NO Emp for this group were active on this day) 
. 
. 
. 
. 
A   2   2013-01-17 (2 EMP active on this day for this group) 
B   2   2013-01-17 (1 more Emp was added to this group on this day)) 
C   1   2013-01-17 (NO Emp for this group were added but 1 is active from the past) 
D   0   2013-01-17 (NO Emp for this group were active on this day) 
. 
. 
. 
A   2   2013-03-24 (2 EMP were removed and added as for this day, 2 active EMP) 
B   4   2013-03-24 (So far 4 active EMP for this group) 
C   3   2013-03-24 (So Far 3 active EMP for this group) 
D   2   2013-03-24 (So far 2 active EMP for this group) 

或更好的視野

當我選擇DateGoupID = 3

GroupID  2013-01-15  2013-01-16  2013-01-17  2013-01-18  2013-01-19  2013-01-20  2013-01-21 
A    2    2    2    2    2    2    2 
B    1    1    2    2    2    2    2 
C    1    1    1    1    1    1    1 
D    0    0    0    0    0    0    0 
+0

什麼是你在連接這些表?或者,它是否在startdate和enddate之間的連接日期? – CodeMonkey 2013-04-03 22:24:02

+0

我想檢查我的JoinDate是否屬於DateGroupID的任何日期......它是否有意義..容易混淆?所以這將是你想象中的後半部分。 – 007 2013-04-03 22:26:04

回答

0

你需要的DateGroup表?

如果不是:

 Select GroupID, Count(EmpId), JoinDate 
    from dbo.[EmployeeStartDateTableName] 
    group by GroupID, JoinDate 

如果這樣:

 SELECT GroupID, Count(EmpId), JoinDate, 
    FROM   dbo.[EmployeeStartDateTableName] INNER JOIN 
        dbo.[DateGroupTableName] ON [EmployeeStartDateTableName].JoinDate = 
    dbo.[DateGroupTableName].StartDate 
    Where groupID = [InsertGroupId] 
    group by GroupID, JoinDate 

然後如果你想在性判據是DateGroupID

+0

據我所知,這不會做任何增量加法。:( – 007 2013-04-03 22:29:37

+0

然後你不需要加入到DateGroupID中?如果日期早於你想要的時間 – actkatiemacias 2013-04-03 22:32:57

+0

它不會每天增加EMP計數,它只顯示當天有多少EMP加入。 – 007 2013-04-03 22:37:10