0

您好以下是示例数据。

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 按 GroupID 对其进行分组。

例如,如果我选择 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
4

1 回答 1

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

于 2013-04-03T22:25:08.417 回答