第一条:
SELECT CODE,
 SUM(DECODE(SUBSTR(SIZETYPE,1,1),'2',1,0) ) IN20,
 SUM(DECODE(SUBSTR(SIZETYPE,1,1),'2',0,1) ) IN40,
 SUM(DECODE(IN_DAMAGE||DECODE(SUBSTR(SIZETYPE,1,1),'2','20','40'),'Y20',1,0)) DM20,
 SUM(DECODE(IN_DAMAGE||DECODE(SUBSTR(SIZETYPE,1,1),'2','20','40'),'Y40',1,0)) DM40
 FROM CTDLEM
 WHERE
 (INDATE>:E_TIME AND INDATE<:MY_NOW ) AND
 (OPERATIONCODE='RE' OR OPERATIONCODE='RF' OR OPERATIONCODE='IE' OR OPERATIONCODE='IF')
 GROUP BY CODE第二条:
 SELECT CODE,
 SUM(DECODE(SUBSTR(SIZETYPE,1,1),'2','20',1,0)) OUT20,
 SUM(DECODE(SUBSTR(SIZETYPE,1,1),'2','20',0,1)) OUT40,
 SUM(DECODE(IN_DAMAGE||DECODE(SUBSTR(SIZETYPE,1,1),'2','20','40'),'Y20',1,0)) DM20,
 SUM(DECODE(IN_DAMAGE||DECODE(SUBSTR(SIZETYPE,1,1),'2','20','40'),'Y40',1,0)) DM40
 FROM CTDLEM
 WHERE
 (OUTDATE>:E_TIME AND OUTDATE<:MY_NOW ) AND
 (OPERATIONCODE='DE' OR OPERATIONCODE='DF' OR OPERATIONCODE='EE' OR OPERATIONCODE='EF')
 GROUP BY CODE如下图:code in20 in40 dm20 dm40 out20 out40 dm20 dm40
-----------------------------------------------
A     1    1    0    0    2     2     0    0
B     0    0    1    0    0     0     1    0
C     2    0    0    1    1     0     0    1
D     2    2    1    1    0     0     1    1
    
 

解决方案 »

  1.   

    union 只能连到下面,不符合
      

  2.   

    连好后再查一次就可以了
    Select * from (A union B) order by....
      

  3.   

    我的方法是用临时表,第一次查询结果放到一张表里 ,然后再把第二次结果也放在一张表里,然后再两张表 join , 或把第二张表的数据 UPDATE 到第一张表 , 我是菜鸟 乱说的~:)
      

  4.   

    UNION ALL只能留最后一个:GROUP BY CODE
      

  5.   

    to  ideacao(草木) 你的方法不行。to lym2003(阿懋) 没看懂。
      

  6.   

    to jinjazz(近身剪(N-P攻略)) 能不能写的详细点?
      

  7.   

    select a.code,a.in20,a.in40......
    from (第一条) a left join (第二条) b on a.code=b.code