0

ユーザー ID を持つ 1 つのテーブルと、AD グループとしての別のテーブルがあります。特定の AD グループは、クライアントが VIP、Pilot、Remote Access などのグループのメンバーであるかどうかを示します。

クライアントがどのグループのメンバーであるかを示すビューを作成しようとすると、グループ名ごとに個別の結合を作成しなければならないという問題が発生します。そうしないと結果として重複が作成されるためです。

Table One
Client_ID   Client_Name
---------   ------------
A               ABC
D               DEF
G               GHI

Table Two:
Client_ID      AD_Group
---------      --------
A               I_GroupX
A               GroupY
D               B_GroupX
D               GroupZ
G               GroupY
G               GroupZ

Result Table:
Client_ID       Client_Name      VIP(X)     Pilot(Y)       RemoteAccess(Z)
---------       -----------      ------     --------        -----------
A                 ABC            I_GroupX     GroupY           Not Member
D                 DEF            Not Member   GroupY            GroupZ
G                 GHI            B_GroupX     Not Member        GroupZ

これは機能しますが、すべてを 1 つのビューに表示するのではなく、グループごとに 1 つ作成する必要があります。

SELECT Client_ID,
      ,Client_Name
      ,[VIP] = CASE
       WHEN A.GroupX IS NULL THEN 'Not Member'
                             ELSE A.AD_Group
       END
  FROM Table1 LEFT OUTER JOIN 
      (SELECT [Client_ID]
             ,[AD_Group]
        FROM Table2
       WHERE  [AD_Group] LIKE '%GroupX') A 
    ON Client_ID = A.Client_ID

前もって感謝します

4

1 に答える 1

1
SELECT Client_ID, Client_Name,
[VIP(X)] = ISNULL((select AD_Group from Table2 where Client_Id = t1.Client_ID and AD_Group LIKE '%GroupX'), 'Not Member'),
[Pilot(Y)] = ISNULL((select AD_Group from Table2 where Client_Id = t1.Client_ID and AD_Group LIKE '%GroupY'), 'Not Member'),
[RemoteAccess(Z)] = ISNULL((select AD_Group from Table2 where Client_Id = t1.Client_ID and AD_Group LIKE '%GroupZ'), 'Not Member')
FROM Table1 t1
于 2013-04-29T20:47:58.787 に答える