0

UserAction次の構造のテーブル ( ) があります。

UserActionPK - unique primary key of the UserAction table
AgencyCode - unique name for an agency
EditedKEY - key of a table edited by the user
UserName - name of the user that edited the record
EditedDate - day on which the edit was made

このデータをクエリして、最終的に、AgencyCode の列と、一連のユーザー ([JohnDoe]、[JoeSmith]、[SomeGuy] など) ごとに 1 つの列を含む、ピボットされたデータ セットを作成する必要があります。各ユーザーの列には、ユーザーが実行した UserActions の総数がリストされます。元/

AgencyCode   JohnDoe   JoeSmith   SomeGuy
ABC          1         3          4
DEF          0         7          2

ただし、特殊なケースが 1 つあります。ユーザーがまったく同じレコード (EditedKEY) に対して 1 日 (EditedDate) に複数のアクションを実行した場合、1 つのアクションとしてのみカウントする必要があります。たとえば、JohnDoe が 2013 年 1 月 1 日に「XXX」の EditedKEY を持つレコードを 1 回編集し、2013 年 1 月 2 日に「XXX」の同じ EditedKEY レコードを 3 回編集した場合、それらは 2 としてカウントされます。合計に向かって編集します。基本的に、ピボットする前に EditedDate 値だけをグループ化する必要があります。EditedKEY 値は GUID であるため、代理店間でも常に一意であることに注意してください。

必要なデータを取得してピボットするクエリがありますが、UserActions を同じ EditedDate、UserName、AgencyCode でグループ化することはありません。

select * from
(
    select UserActionKEY, AgencyCode, EditedDate, UserName
    from UserAction
    where EditedDate >= @FromDate
    and EditedDate <= @ToDate
) Pivot1
pivot
(
    count(UserActionKEY) 
    for UserName in 
    (
        [JohnDoe],
        [JohnSmith],
        [SomeGuy],
    )
) Pivot2

これらのアクションを日/ユーザー/機関別にグループ化するにはどうすればよいですか?

更新 - 要求されたサンプル データを次に示します。

UserActionPK                            AgencyCode  EditedKEY                               UserName    EditedDate
0F573329-0C83-44B8-AD9A-808D8795FCCF    ABC         521A63CD-AEEF-44BF-BDCB-EE96373AC39A    JohnDoe     3/11/2013
36321DB6-DA1B-430E-B85C-36372088860E    ABC         521A63CD-AEEF-44BF-BDCB-EE96373AC39A    JohnDoe     3/11/2013
BDC9B165-CC93-409A-BEAE-3365709F6E54    ABC         042D633F-47AC-4A5C-BE3B-B179E01AD5C9    JohnDoe     3/11/2013
2475344C-80DD-4898-A7CD-B41B2593F0FE    DEF         F6016422-BB24-4B39-A735-BCD1206AEA4A    JohnDoe     3/11/2013
3CD7B9BB-428A-45E9-B254-8A2FD502B9F7    DEF         C9A028F6-6E1A-4FD6-A549-D932BC20AA88    JohnDoe     3/11/2013
B0348158-1455-42DF-81EB-29704F08E920    ABC         6937C16A-752A-4D69-BBE9-932015B8C137    JohnDoe     3/12/2013
F1C5950D-05D2-48B6-BFC3-1C32FD970F76    ABC         521A63CD-AEEF-44BF-BDCB-EE96373AC39A    JohnDoe     3/12/2013
502F67A2-6448-48FB-8BFE-74D21592BA48    ABC         B3371961-06EE-4CD3-9373-87102EB793FA    JoeSmith    3/11/2013
E797DFE0-8693-44FC-821F-46B745B37533    ABC         79E1F21F-C7D3-4F8C-8D51-536C34FF84D4    JoeSmith    3/11/2013

この例では、同じ "EditedKEY" (521A63CD-AEEF-44BF-BDCB-EE96373AC39A) に対して 2 つのアクションがあるため、JohnDoe 列にはエージェンシー "ABC" のレコードが 5 つあるにもかかわらず、エージェンシー "ABC" のアクション数が 4 になるはずです。 )、その日は 1 アクションとしてカウントされます。

4

2 に答える 2

1

ストレートではなくCOUNT(...)、グループ化基準と追加フィールドで SELECT DISTINCT を実行しますValue = 1。次に、 のSUM(Value)代わりに a を実行しますCOUNT(...)

于 2013-03-13T22:01:14.140 に答える