日期:2014-05-18  浏览次数:20506 次

怎样改写这个SQL?

select   sum(金额)as '出库金额 '   from
(
select   isnull(sum((   c     *     k     *   (   h     /   1000)   *   7.85)     *     sl   *   dj),0.00)as   金额   from   t_kc   where   type= '板材 'and   status= '0 '
union   all
select   isnull(sum(zl       *     c     *     sl   *   dj),0.00)   from   t_kc   where   type= '型材 'and   status= '0 '
union   all
select   isnull(sum(sl   *   dj),0.00)   from   t_kc   where   type= '标准件 'and   status= '0 '
union   all
select   isnull(sum(sl   *   dj),0.00)   from   t_kc   where     type= '消耗材料 'and   status= '0 '

)   a


go

select   sum(金额)as   '退库金额 '   from
(
select   isnull(sum((   c     *     k     *   (   h     /   1000)   *   7.85)     *     sl   *   dj),0.00)as   金额   from   t_kc   where   type= '板材 'and   status= '2 '
union   all
select   isnull(sum(zl       *     c     *     sl   *   dj),0.00)   from   t_kc   where   type= '型材 'and   status= '2 '
union   all
select   isnull(sum(sl   *   dj),0.00)   from   t_kc   where   type= '标准件 'and   status= '2 '
union   all
select   isnull(sum(sl   *   dj),0.00)   from   t_kc   where     type= '消耗材料 'and   status= '2 '

)   b

------------------------------------

以上语句执行没有错误,但是执行结果是1列,2行记录,就是这样:
出库金额
1000
退库金额
400
--------------------------------------------
我想得到这样的结果
出库金额           退库金额
1000                   4000
就是放到一个表内,一行2列.

该怎样做呢??谢谢大家.



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

select sum(CASE status WHEN '0 ' THEN 金额 ELSE 0 END) as '出库金额 ',
sum(CASE status WHEN '2 ' THEN 金额 ELSE 1 END) as '退库金额 ' from
(

select isnull(sum(( c * k * ( h / 1000) * 7.85) * sl * dj),0.00)as 金额 from t_kc where type= '板材 'and status IN ( '0 ', '2 ')
union all
select isnull(sum(zl * c * sl * dj),0.00) from t_kc where type= '型材 'and status IN ( '0 ', '2 ')
union all
select isnull(sum(sl * dj),0.00) from t_kc where type= '标准件 'and status IN ( '0 ', '2 ')
union all
select isnull(sum(sl * dj),0.00) from t_kc where type= '消耗材料 'and status IN ( '0 ', '2 ')

) a

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

select [出库金额]=
(
select sum(金额)as '出库金额 ' from
(
select isnull(sum(( c * k * ( h / 1000) * 7.85) * sl * dj),0.00)as 金额 from t_kc where type= '板材 'and status= '0 '
union all
select isnull(sum(zl * c * sl * dj),0.00) from t_kc where type= '型材 'and status= '0 '
union all
select isnull(sum(sl * dj),0.00) from t_kc where typ