zoukankan      html  css  js  c++  java
  • sql行合并

    如图1:

    如图2:

    如图3:

    图1和图2是渠道"WH00026"某天的相关数据,怎么把它合并一条数据呢如成图3的效果?有两种方法:
    第一种: 用表变量

     1 declare @ac table
     2   (
     3     channelid varchar(100),
     4     pmoney decimal(18,2),
     5     ptype tinyint,
     6     inday varchar(50)
     7   )
     8   insert into @ac(channelid,pmoney,ptype,inday)
     9   select a.channelid,a.pmoney,a.ptype,a.inday
    10   from(
    11   select channelid,sum(totalFee) as pmoney,inday,1 as ptype from orderCPS where inday='2016-10-13' and channelid='WH00026' and comOrderStatus is null group by channelid,inday
    12   union all
    13   select channelid,sum(totalFee) as pmoney,inday,2 as ptype from orderCPS where inday='2016-10-13' and channelid='WH00026' and orderStatus=0 group by channelid,inday
    14   ) a
    15 
    16 
    17   declare @bc table
    18   (
    19     channelid varchar(100),
    20     pmoney decimal(18,2),
    21     pcount int,
    22     ptype tinyint,
    23     inday varchar(50)
    24   )
    25   insert into @bc(channelid,pmoney,pcount,ptype,inday)
    26   select a.channelid,a.pmoney,a.pcount,a.ptype,a.inday
    27   from(
    28  select channelid,count(*) as pcount,sum(totalFee) as pmoney,1 as ptype ,inday from myOrderCPS  where inday='2016-10-13' and channelid='WH00026'   group by channelid,inday 
    29  union all
    30  select channelid,count(*) as pcount,sum(totalFee) as pmoney,2 as ptype ,inday from OrderCPS  where inday='2016-10-13' and channelid='WH00026' and orderStatus=0  group by channelid,inday
    31 
    32   ) a
    33 
    34 select a.*,b.* from (
    35  select channelid,
    36  max(case ptype when 1 then pmoney end) as '对内金额',
    37  max(case ptype when 2 then pmoney end) as '对外金额',
    38  inday
    39 from @ac
    40 group by channelid,inday
    41 ) a join
    42 (
    43  select channelid,
    44  max(case ptype when 1 then pcount end) as '请求数',
    45  max(case ptype when 2 then pcount end) as '成功数',
    46  max(case ptype when 1 then pmoney end) as '对内金额',
    47  max(case ptype when 2 then pmoney end) as '对外金额',
    48  inday
    49 from @bc
    50 group by channelid,inday
    51 ) b on a.channelid=b.channelid and a.inday=b.inday
    View Code

    第二种:用with cte 短语:

     1 with ac as
     2 (
     3   select a.channelid,a.pmoney,a.ptype,a.inday
     4   from(
     5   select channelid,sum(totalFee) as pmoney,inday,1 as ptype from orderCPS where inday='2016-10-13' and channelid='WH00026' and comOrderStatus is null group by channelid,inday
     6   union all
     7   select channelid,sum(totalFee) as pmoney,inday,2 as ptype from orderCPS where inday='2016-10-13' and channelid='WH00026' and orderStatus=0 group by channelid,inday
     8   ) a
     9 ),
    10 bc as
    11 (
    12  select a.channelid,a.pmoney,a.pcount,a.ptype,a.inday
    13  from(
    14  select channelid,count(*) as pcount,sum(totalFee) as pmoney,1 as ptype ,inday from myOrderCPS  where inday='2016-10-13' and channelid='WH00026'   group by channelid,inday 
    15  union all
    16  select channelid,count(*) as pcount,sum(totalFee) as pmoney,2 as ptype ,inday from OrderCPS  where inday='2016-10-13' and channelid='WH00026' and orderStatus=0  group by channelid,inday
    17   ) a
    18 )
    19 select a.*,b.* from (
    20  select channelid,
    21  max(case ptype when 1 then pmoney end) as '对内金额',
    22  max(case ptype when 2 then pmoney end) as '对外金额',
    23  inday
    24 from ac
    25 group by channelid,inday
    26 ) a join
    27 (
    28  select channelid,
    29  max(case ptype when 1 then pcount end) as '请求数',
    30  max(case ptype when 2 then pcount end) as '成功数',
    31  max(case ptype when 1 then pmoney end) as '对内金额',
    32  max(case ptype when 2 then pmoney end) as '对外金额',
    33  inday
    34 from bc
    35 group by channelid,inday
    36 ) b on a.channelid=b.channelid and a.inday=b.inday
    View Code

          


  • 相关阅读:
    Java IO输入输出流 FileWriter 字符流
    Java IO输入输出流File 字节流
    Java List集合和Map集合的综合应用
    表单提交中的重复问题(表单令牌验证)
    php中const与define的区别
    阿里云中获取文件及目录列表的方法
    巧用php中的array_filter()函数去掉多维空值
    文件大小格式化函数
    UTC 通用格式时间 转换为 时间戳,并格式化为2017-01-01 12:00:00
    关于匿名函数的使用,购物车中计算销售税的应用
  • 原文地址:https://www.cnblogs.com/mrzhoushare/p/5957954.html
Copyright © 2011-2022 走看看