现在要把sql语句从mssqlserver转到oracle下面,对oracle下面sql语法不是很熟悉,请大家帮下忙.
下面是sql语句,执行的时候提示最后order by 那一行的e.mnf_train 标识符无效
SELECT bll_type, bll_no, trn_type, trn_no, self, trn_date, b.vcn_code, b.unit, b.maker, b.price,  
       SUM(quantity) AS quantity, SUM(b.money) AS money, vcn_name, unt_name, mnf_name, c.vcn_train, 
       e.mnf_train  FROM gatheringinfo a, paybill b, vaccines c, units d, manufactory e  
WHERE a.ginf_id = b.inf_id 
AND bll_type = '20'  
AND b.vcn_code = c.vcn_code  
AND b.unit = d.unt_code  
AND b.maker = e.mnf_id  
AND to_char(a.gth_date,'yyyy-mm-dd') >= '2007-10-01' 
AND to_char(a.gth_date,'yyyy-mm-dd') <= '2007-10-08' 
GROUP BY bll_type, bll_no, trn_type, trn_no, self, trn_date, b.vcn_code, b.unit, b.maker,  b.price, 
vcn_name, unt_name, mnf_name, c.vcn_train, e.mnf_train 
UNION  
SELECT '', '', a.trn_type, a.trn_no, a.self, trn_date, b.vcn_code, b.unit, b.maker, b.price,  
     SUM(quantity) AS quantity, SUM(b.money) AS money, vcn_name, unt_name, mnf_name, c.vcn_train, 
     e.mnf_train   FROM transh a, transb b, vaccines c, units d, manufactory e  
WHERE a.trn_type = b.trn_type 
AND a.trn_no = b.trn_no 
AND a.self = b.self  
AND b.vcn_code = c.vcn_code  
AND b.unit = d.unt_code  
AND b.maker = e.mnf_id  
AND a.trn_type = '21' 
AND a.charged = '1'  
AND to_char(a.start_date,'yyyy-mm-dd') >= '2007-10-01' 
AND to_char(a.start_date,'yyyy-mm-dd') <= '2007-10-08' 
GROUP BY a.trn_type, a.trn_no, a.self, trn_date, b.vcn_code, b.unit, b.maker, b.price,  
vcn_name, unt_name, mnf_name, c.vcn_train, e.mnf_train   
ORDER BY c.vcn_train, e.mnf_train 

解决方案 »

  1.   

    SELECT  ' ',  ' ', a.trn_type, a.trn_no, a.self, trn_date, b.vcn_code, b.unit, b.maker, b.price,   
         SUM(quantity) AS quantity, SUM(b.money) AS money, vcn_name, unt_name, mnf_name, c.vcn_train,  
         e.mnf_train   FROM transh a, transb b, vaccines c, units d, manufactory e   
    WHERE a.trn_type = b.trn_type  
    AND a.trn_no = b.trn_no  
    AND a.self = b.self   
    AND b.vcn_code = c.vcn_code   
    AND b.unit = d.unt_code   
    AND b.maker = e.mnf_id   
    AND a.trn_type =  '21 '  
    AND a.charged =  '1 '   
    AND to_char(a.start_date, 'yyyy-mm-dd ')  >=  '2007-10-01 '  
    AND to_char(a.start_date, 'yyyy-mm-dd ')  <=  '2007-10-08 '  
    GROUP BY a.trn_type, a.trn_no, a.self, trn_date, b.vcn_code, b.unit, b.maker, b.price,   
    vcn_name, unt_name, mnf_name, c.vcn_train, e.mnf_train    
    ORDER BY c.vcn_train, e.mnf_train
    这段单独执行有没有问题?