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
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
'邮件' 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
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
*/