如题 union的用法 有人来吗

           --中长期合同
      select jzname,ydrq,SUM(htshl*hthshj) as '合同金额', 
      SUM(htshl) as '电量',
      SUM(htshl*hthshj)/SUM(htshl) as '价格' 
      from Contracts
      where jzname in (@jzname) and ydrq between @start_rq and @end_rq
      group by jzname,ydrq
      --日前电能
      select a.jzname,a.ydrq,
      cast(sum(a.befcl/4*0.912)*SUM(b.htshl) as decimal(14,2)) as '日前金额',
      cast(SUM(a.Befshl)-SUM(b.htshl)as decimal(14,2)) as '电量' ,
      cast(sum((a.befshl-b.htshl)*Befhshj)/SUM(Befshl)as decimal(14,2)) as '价格' 
      from BefDatas a left join (select ydrq,jzname,ydontime,cast(SUM(htshl) as decimal(14,2)) as 
       htshl,CAST(SUM(htshl*hthshj)/sum(htshl) as decimal(14,2)) as            hthshj
      from Contracts group by ydrq,ydontime,jzname) b on a.ydrq=b.ydrq and a.ydontime=b.ydontime and a.jzname=b.jzname
      where a.jzname in (@jzname) and a.ydrq between @start_rq and @end_rq
    group by a.ydrq,a.jzname,a.ydontime order by a.ydrq,a.jzname,a.ydontime

   这两段怎么用 union all 连接啊 

首先,两个SQL查出来的字段名必须一致。其次select * from (SQL1 union all SQL2) t1,*号字段替换成和你SQL1、SQL2查出来一样的字段。在最外层用t1这个别名去点出来。你研究下,就是这个规则了