今天在工作中碰到一個問題,用group by 語句進行分組時出現ORA-00979錯誤。
代碼如下:

select R.ORDER_NO, R.PRODUCT_CODE, R.REGION_NO, R.ORGAN_NEW_NO, R.ORGAN_NAME, R.ERROR_TYPE, R.SALE_DISCOUNT, R.SALE_NUM, R.REMARK, DECODE(R.ERROR_TYPE, '1', '數量異常', '2', '折扣異常', '3', '提前銷售') ERROR_TYPE_DES, A.REGION_NAME REGION_NAME, P.PUTONSALE_DATE PUTONSALE_DATE, P.REMARK PRODUCT_LEVEL, P.SALE_DATE SALE_DATE from U_MD_WX2.ITSC_MSG_ABNORMAL_RECORD R, U_MD_WX2.ITSC_PUTONSALE_INFO P, U_MD_WX2.ITSC_AREA_CONFIG A WHERE R.REGION_NO = A.REGION_NO and R.PRODUCT_CODE = P.PRODUCT_CODE group by R.ORDER_NO, R.PRODUCT_CODE, R.REGION_NO, R.ORGAN_NEW_NO, R.ORGAN_NAME, R.ERROR_TYPE, R.SALE_DISCOUNT, R.SALE_NUM, DECODE(R.ERROR_TYPE, '1', '數量異常', '2', '折扣異常', '3', '提前銷售'), A.REGION_NAME, P.PUTONSALE_DATE, SALE_DATE
運行時出現以下錯誤:
經自己排查后,發現是group by后面缺少字段。
本以為,查詢所有字段,然后按照其中幾個字段進行分組。。。
仔細想想后,我太傻了,查詢所有字段怎么可用只用部分字段進行分組,又沒有使用聚合函數。
正確的方式應該是查詢多少字段,group by 后面就要加上多少字段。
正確的代碼如下:

select R.ORDER_NO, R.PRODUCT_CODE, R.REGION_NO, R.ORGAN_NEW_NO, R.ORGAN_NAME, R.ERROR_TYPE, R.SALE_DISCOUNT, R.SALE_NUM, R.REMARK, DECODE(R.ERROR_TYPE, '1', '數量異常', '2', '折扣異常', '3', '提前銷售') ERROR_TYPE_DES, A.REGION_NAME REGION_NAME, P.PUTONSALE_DATE PUTONSALE_DATE, P.REMARK PRODUCT_LEVEL, P.SALE_DATE SALE_DATE from U_MD_WX2.ITSC_MSG_ABNORMAL_RECORD R, U_MD_WX2.ITSC_PUTONSALE_INFO P, U_MD_WX2.ITSC_AREA_CONFIG A WHERE R.REGION_NO = A.REGION_NO and R.PRODUCT_CODE = P.PRODUCT_CODE group by R.ORDER_NO, R.PRODUCT_CODE, R.REGION_NO, R.ORGAN_NEW_NO, R.ORGAN_NAME, R.ERROR_TYPE, R.SALE_DISCOUNT, R.SALE_NUM, R.REMARK, DECODE(R.ERROR_TYPE, '1', '數量異常', '2', '折扣異常', '3', '提前銷售'), A.REGION_NAME, P.PUTONSALE_DATE, P.REMARK, SALE_DATE
Oracle基礎還要補啊。