当前位置: 代码迷 >> Sql Server >> 新人求解一条sql解决思路
  详细解决方案

新人求解一条sql解决思路

热度:32   发布时间:2016-04-24 10:07:25.0
新人求解一条sql
A表:... depsMoney merchantcode appid(行业类型) ...

B表:... bsasMoney merchantcode ...

C表:... merchantcode merchantname appid appname...


三表联合查询得到如下类型列表:
appid  appname  depsRows(A表appid类型总条数) bsaRows(B表appid类型总条数)  depsMoneys(A表appid类型总金额) bsaMoneys(B表appid类型总条数)


------解决方案--------------------
select a.appid,c.appname,count(a.aapid),count(b.appid),sum(a.depsMoney).sum(b.bsasMoney)
from
  a inner join b on a.xx=b.xx
      inner join c on a.xx=c.xx
group by
   a.appid,c.appname

------解决方案--------------------

select * from
(
    select COUNT(*) as [value],'bsaRows' as [type],appid,appname from B 
    inner join C on B.merchantcode=C.merchantcode
    group by appid,appname
    union all
    select SUM(bsasMoney) as [value],'bsasMoney' as [type],appid,appname from B 
    inner join C on B.merchantcode=C.merchantcode
    group by appid,appname
    union all
    select COUNT(*) as [value],'depsRows' as [type],appid,appname from A 
    inner join C on A.merchantcode=C.merchantcode
    group by C.appid,appname
    union all
    select SUM(depsMoney ) as [value],'depsMoneys' as [type],appid,appname from A 
    inner join C on A.merchantcode=C.merchantcode
    group by C.appid,appname
) t pivot
(
   sum([value]) for [type] in ([depsRows],[bsaRows],[depsMoneys],[bsasMoney])
)
 as pvt

  相关解决方案