当前位置: 代码迷 >> Oracle管理 >> 求好手帮忙,SQL报错
  详细解决方案

求好手帮忙,SQL报错

热度:67   发布时间:2016-04-24 04:17:24.0
求高手帮忙,SQL报错
我有两句SQL,写法都差不多,一句执行成功,一句失败,向各位高手请教,为何失败;
第一句:成功,红色部分是子查询
SELECT A.ORD_ATTR6 LENGTH,A.psc,A.PROD_CNAME,A.MAT_SPEC_DESC,count(A.BOX_NUM) BOX_NUM_NO,SUM(A.MAT_GROSS_WT) MAT_GROSS_WT,SUM(A.MAT_WT) MAT_WT,
(SELECT STRUCTURE_DIVISION FROM TXGBG01  where  A.ORD_ATTR1 = WIRE_DIAMETER_CODE and A.ORD_ATTR2 = STRUCTURE_DIVISION_CODE and COMPANY_CODE = 'JSJM') JIEGOU
FROM 
       (SELECT b.ORD_ATTR6,       b.ORD_ATTR1,b.ORD_ATTR2,a.PSC,a.STOCK_NO,a.prod_code,a.PROD_CNAME,MAT_SPEC_DESC,a.BOX_NUM,a.COMPANY_CODE,SUM(a.MAT_WT) MAT_WT,SUM(a.MAT_GROSS_WT) MAT_GROSS_WT 
   FROM TMM0001 a,TSOSC01 b where a.STOCK_NO = 'B01' and a.COMPANY_CODE = 'JSJM' and a.psc=b.psc and a.prod_code = 'J2' and b.COMPANY_CODE = 'JSJM'
   GROUP BY b.ORD_ATTR6,b.ORD_ATTR1,b.ORD_ATTR2,a.PSC,STOCK_NO,a.prod_code,a.PROD_CNAME,a.MAT_SPEC_DESC,a.BOX_NUM,a.COMPANY_CODE
) A            
WHERE A.COMPANY_CODE = 'JSJM'
AND A.STOCK_NO = 'B01'
AND A.PROD_CODE IN ('J2')
group by A.ORD_ATTR6,A.psc,A.PROD_CNAME,A.MAT_SPEC_DESC, A.ORD_ATTR1,A.ORD_ATTR2
order by A.ORD_ATTR6,A.PSC,A.PROD_CNAME,A.MAT_SPEC_DESC,A.ORD_ATTR1,A.ORD_ATTR2 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
第二句:失败 ,group by 放什么都报错,主要报错在蓝色区域
SELECT A.PROD_CNAME,count(A.BOX_NUM) BOX_NUM_NO,SUM(A.MAT_GROSS_WT) MAT_GROSS_WT,SUM(A.MAT_WT) MAT_WT,
(select code_desc_1_content from tep0002 b where A.ORD_ATTR2 = b.code and b.CODE_CLASS = 'QMJ2') ZHIJIN
FROM  
   (SELECT b.ORD_ATTR2,b.ORD_ATTR3,b.ORD_ATTR5,a.STOCK_NO,a.prod_code,a.PROD_CNAME,a.BOX_NUM,a.COMPANY_CODE,SUM(a.MAT_WT) MAT_WT,SUM(a.MAT_GROSS_WT) MAT_GROSS_WT 
   FROM TMM0001 a,TSOSC01 b where a.STOCK_NO = 'B01' and a.COMPANY_CODE = 'JSJM'  and a.prod_code = 'J1' and a.psc =b.psc and b.COMPANY_CODE = 'JSJM'
   GROUP BY b.ORD_ATTR2,b.ORD_ATTR3,b.ORD_ATTR5,STOCK_NO,a.prod_code,a.PROD_CNAME,a.BOX_NUM,a.COMPANY_CODE
) A            
WHERE A.COMPANY_CODE = 'JSJM'
AND A.STOCK_NO = 'B01'
AND A.PROD_CODE IN ('J1')
group by A.PROD_CNAME
order by A.PROD_CNAME


------解决方案--------------------
SELECT a.prod_cname, COUNT(a.box_num) box_num_no, SUM(a.mat_gross_wt) mat_gross_wt, SUM(a.mat_wt) mat_wt,
       (SELECT code_desc_1_content
           FROM tep0002 b
          WHERE a.ord_attr2 = b.code
            AND b.code_class = 'QMJ2') zhijin
  FROM (SELECT b.ord_attr2, b.ord_attr3, b.ord_attr5, a.stock_no, a.prod_code, a.prod_cname, a.box_num, a.company_code,
                SUM(a.mat_wt) mat_wt, SUM(a.mat_gross_wt) mat_gross_wt
           FROM tmm0001 a, tsosc01 b
          WHERE a.stock_no = 'B01'
            AND a.company_code = 'JSJM'
            AND a.prod_code = 'J1'
            AND a.psc = b.psc
            AND b.company_code = 'JSJM'
          GROUP BY b.ord_attr2, b.ord_attr3, b.ord_attr5, stock_no, a.prod_code, a.prod_cname, a.box_num, a.company_code) a
 WHERE a.company_code = 'JSJM'
   AND a.stock_no = 'B01'
   AND a.prod_code IN ('J1')
 GROUP BY a.prod_cname, a.ord_attr2
  相关解决方案