A(栏目信息表)(注意MSG_TYPE 0为邮件,1为短信)
GUID                                   SERVER_NAME   POTAL_ID    TYPE_ID     MODULE_ID   MSG_TYPE
277d0e09-0fbb-4941-9229-7619a7ee2778   海关总置令     0           1           17754       0
2C4699BC-8B98-4335-B257-22BCEE4F9D94   邮件服务测试   0           3889        1188        0
55c92ca3-117f-48b1-b251-9435eb19598c   报关员考试公告 91          3342        9049        0
A7205118-EB52-4545-880E-1F2482E712CE   短信服务测试   0           3889        1188        1 
c3dba60d-d89c-482d-a74b-0259fe32f446   业务咨询提醒   91          1461        10750       0 
f57f2142-ddd1-4c9b-bbe8-0d61ad266238   1111           0           1           1190        1
b(邮件表)
GUID                                 MODULE_ID   PORTAL_ID   TAB_ID      
------------------------------------ ----------- ----------- -------
B078AC3D-47CC-44B1-8D8A-9651884EE6C1 1188        0           3889       
C
MODULE_ID                            USE_ID      
------------------------------------ ----------- 
277d0e09-0fbb-4941-9229-7619a7ee2778 6032
277d0e09-0fbb-4941-9229-7619a7ee2778 18754
2C4699BC-8B98-4335-B257-22BCEE4F9D94 6032
2C4699BC-8B98-4335-B257-22BCEE4F9D94 39215
55c92ca3-117f-48b1-b251-9435eb19598c 6032
55c92ca3-117f-48b1-b251-9435eb19598c 19837
55c92ca3-117f-48b1-b251-9435eb19598c 39215
c3dba60d-d89c-482d-a74b-0259fe32f446 7518
c3dba60d-d89c-482d-a74b-0259fe32f446 17079
就是现在如何加上得出如下结果
Msg_Type Server_Name    邮件数量    订阅用户数量   
-------- -------------- ----------- ----------- 
邮件       海关总置令        0           2
邮件       邮件服务测试      1           2

解决方案 »

  1.   

    Select
    '邮件' As Msg_Type,
    A.Server_Name,
    IsNull(B.邮件数量, 0) As 邮件数量,
    IsNull(C.订阅用户数量, 0) As 订阅用户数量
    From
    A
    Left Join
    (Select MODULE_ID, Count(MODULE_ID) As 邮件数量 From B Group By MODULE_ID) B
    On A.MODULE_ID = B.MODULE_ID
    Left Join
    (Select MODULE_ID, Count(MODULE_ID) As 订阅用户数量 From C Group By MODULE_ID) C
    On A.GUID = C.MODULE_ID
    Where A.Msg_Type = 0  and A.Potal_ID  =  0
      

  2.   

    --創建測試環境
    Create Table A
    (GUID Varchar(50),
     SERVER_NAME Nvarchar(20),
     POTAL_ID Int,
     TYPE_ID Int,
     MODULE_ID Int,
     MSG_TYPE Bit)
    Insert A Select '277d0e09-0fbb-4941-9229-7619a7ee2778',          N'海关总置令',         0,           1,              17754,       0
    Union All Select '2C4699BC-8B98-4335-B257-22BCEE4F9D94',   N'邮件服务测试',      0,          3889,        1188,        0
    Union All Select '55c92ca3-117f-48b1-b251-9435eb19598c',          N'报关员考试公告', 91,         3342,        9049,        0
    Union All Select 'A7205118-EB52-4545-880E-1F2482E712CE',     N'短信服务测试',     0,           3889,        1188,        1 
    Union All Select 'c3dba60d-d89c-482d-a74b-0259fe32f446',           N'业务咨询提醒',     91,         1461,        10750,       0 
    Union All Select 'f57f2142-ddd1-4c9b-bbe8-0d61ad266238',          N'1111',                     0,           1,               1190,        1Create Table B
    (GUID Varchar(50),
     MODULE_ID Int,
     PORTAL_ID Int,
     TAB_ID Int)
    Insert B Select 'B078AC3D-47CC-44B1-8D8A-9651884EE6C1', 1188,        0,           3889       Create Table C
    (MODULE_ID Varchar(50),
     USE_ID Int)
    Insert C Select '277d0e09-0fbb-4941-9229-7619a7ee2778', 6032
    Union All Select '277d0e09-0fbb-4941-9229-7619a7ee2778', 18754
    Union All Select '2C4699BC-8B98-4335-B257-22BCEE4F9D94', 6032
    Union All Select '2C4699BC-8B98-4335-B257-22BCEE4F9D94', 39215
    Union All Select '55c92ca3-117f-48b1-b251-9435eb19598c', 6032
    Union All Select '55c92ca3-117f-48b1-b251-9435eb19598c', 19837
    Union All Select '55c92ca3-117f-48b1-b251-9435eb19598c', 39215
    Union All Select 'c3dba60d-d89c-482d-a74b-0259fe32f446', 7518
    Union All Select 'c3dba60d-d89c-482d-a74b-0259fe32f446', 17079
    GO
    --測試
    Select
    N'邮件' As Msg_Type,
    A.Server_Name,
    IsNull(B.邮件数量, 0) As 邮件数量,
    IsNull(C.订阅用户数量, 0) As 订阅用户数量
    From
    A
    Left Join
    (Select MODULE_ID, Count(MODULE_ID) As 邮件数量 From B Group By MODULE_ID) B
    On A.MODULE_ID = B.MODULE_ID
    Left Join
    (Select MODULE_ID, Count(MODULE_ID) As 订阅用户数量 From C Group By MODULE_ID) C
    On A.GUID = C.MODULE_ID
    Where A.Msg_Type = 0  and A.Potal_ID = 0
    GO
    --刪除測試環境
    Drop Table A, B, C
    --結果
    /*
    Msg_Type Server_Name 邮件数量 订阅用户数量
    邮件 海关总置令 0 2
    邮件 邮件服务测试 1 2
    */