WITH T--根节点 新房媒体集团
AS (SELECT *
FROM SlUrlKpiBiTree WITH(NOLOCK)
WHERE id = '5'
),
T1--子节点 各个城市
AS (SELECT *,
0 AS childLevel
FROM T
UNION ALL
SELECT SlUrlKpiBiTree.*,
1 AS childLevel
FROM SlUrlKpiBiTree WITH(NOLOCK)
JOIN T1
ON SlUrlKpiBiTree.pid = T1.id
),
T2--叶子节点 各个销售和组名
AS (SELECT *
FROM SlUrlKpiBiTree a WITH(NOLOCK)
WHERE NOT EXISTS(SELECT pid
FROM SlUrlKpiBiTree
WHERE pid = a.ID)--id not in (select pid from SlUrlKpiBiTree)
),
T3--除去组名保留销售
AS (SELECT *
FROM T1 a
WHERE [type] = -1
AND EXISTS(SELECT id
FROM T2
WHERE id = a.id)--id in (select id from T2)
),
T4--取销售邮箱
AS (SELECT UrlOwner
FROM T3
JOIN SlUrlKpiTreeToUrlOwner WITH(NOLOCK)
ON T3.ID = SlUrlKpiTreeToUrlOwner.TreeID
),
T5--取各个销售每天的pc流量
AS (SELECT *
FROM SlUVForUrlOwnerForChannel WITH(NOLOCK)
WHERE UrlOwner IN (SELECT UrlOwner
FROM T4)
AND Channel <> '*'
AND datadate = @DataDate
AND groupdefineid IN (SELECT id
FROM SlUrlKpiChannelDefine
WHERE GroupDefineID = 2
AND id IN ( 1, 3, 5, 7 )--pc
)),
T6--取各个销售每天的wap流量
AS (SELECT *
FROM SlUVForUrlOwnerForChannel WITH(NOLOCK)
WHERE urlowner IN (SELECT UrlOwner
FROM T4)
AND Channel <> '*'
AND datadate = @DataDate
AND groupdefineid IN (SELECT id
FROM SlUrlKpiChannelDefine
WHERE GroupDefineID = 2
AND id IN ( 2, 4, 6, 8 )--wap
)),
T7
AS --取PC频道名称
(SELECT T5.*,
SlUrlKpiChannelDefine.ChannelName,
SlUrlKpiChannelDefine.CodeExpression
FROM T5
JOIN SlUrlKpiChannelDefine
ON T5.groupdefineid = SlUrlKpiChannelDefine.groupdefineid),
T8
AS --取WAP频道名称
(SELECT T6.*,
SlUrlKpiChannelDefine.ChannelName,
SlUrlKpiChannelDefine.CodeExpression
FROM T6
JOIN SlUrlKpiChannelDefine
ON T6.groupdefineid = SlUrlKpiChannelDefine.groupdefineid),
T9
AS --pc流量统计
(SELECT urlowner,
channelname,
DataDate,
Sum(Countquantity) AS PCCountquantity,
Sum(VisitorQuantity) AS PCVisitorQuantity
FROM T7
GROUP BY urlowner,
channelname,
DataDate),
T10
AS --wap流量统计
(SELECT urlowner,
channelname,
DataDate,
Sum(Countquantity) AS WapCountquantity,
Sum(VisitorQuantity) AS WapVisitorQuantity
FROM T8
GROUP BY urlowner,
channelname,
DataDate),
T11
AS (SELECT T9.UrlOwner,
T9.ChannelName,
T9.DataDate,
T9.PCCountquantity,
T9.PCVisitorQuantity,
T10.WapCountquantity,
T10.WapVisitorQuantity
FROM T9--根据所属人、频道、日期,连接PC WAP两个子查询
JOIN T10
ON T9.ChannelName = T10.ChannelName
AND T9.DataDate = T10.dataDate
AND T9.urlowner = T10.urlowner)
SELECT T1.Name AS CityName,
T11.UrlOwner,
T11.ChannelName,
T11.DataDate,
T11.PCCountquantity,
T11.PCVisitorQuantity,
T11.WapCountquantity,
T11.WapVisitorQuantity
FROM T11
JOIN SlUrlKpiTreeToUrlOwner
ON T11.UrlOwner = SlUrlKpiTreeToUrlOwner.UrlOwner
JOIN T1
ON T1.ID = SlUrlKpiTreeToUrlOwner.TreeID
WHERE T1.type=3