--中长期合同
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这个别名去点出来。你研究下,就是这个规则了