我有两句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