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 に答える