Oracle中的Group By无效

时间:2015-09-09 07:14:25

标签: sql oracle group-by

我正在尝试将group by用于select中的所有字段。

我的查询:

SELECT count(*) as totalRow,
       trim(A.P_CODE) P_CODE,
       INITCAP(trim(A.ALTERNATE_TEXT)) ALTERNATE_TEXT,
       trim(A.LINKED_SKU_CODE) as LINKED_SKU_CODE,
       UCWORD(B.BRAND_NAME) BRAND_NAME,
       LOWER(TRIM(A.UNIT)) UNIT,
       INITCAP(TRIM(A.PK_SIZE)) PK_SIZE,
       trim(A.DF_SALE_RATE) DF_SALE_RATE,
       trim(A.MRP) MRP,
       INITCAP(trim(A.CAT_TYPE)) CAT_TYPE,
       NVL(MAX_QTY,25) MAX_QTY,
       A.BAL_QTY 
FROM GET_PRODUCT A,
     WEB_BRANDS B 
WHERE A.P_CODE in (".$p_codes.") 
  AND A.BR_CODE = '".BR_CODE."' 
  AND A.BRAND_CODE = B.BRAND_CODE 
GROUP BY A.P_CODE,
         A.ALTERNATE_TEXT,
         A.LINKED_SKU_CODE,
         B.BRAND_NAME,
         A.UNIT,
         A.PK_SIZE,
         A.DF_SALE_RATE,
         A.MRP,
         A.CAT_TYPE,
         MAX_QTY,
         A.BAL_QTY  
ORDER BY CAT_TYPE,
         P_NAME

错误:

  

ORA-00979:不是C:中的GROUP BY表达式

请指出我正确的方向或指出我犯错的地方。

1 个答案:

答案 0 :(得分:-1)

您应该在GROUP BY部分写入SELECT部分​​中的至少所有列(没有可聚合列)。我认为你的查询应该像

SELECT count(*) as totalRow,
       trim(A.P_CODE) P_CODE,
       INITCAP(trim(A.ALTERNATE_TEXT)) ALTERNATE_TEXT,
       trim(A.LINKED_SKU_CODE) as LINKED_SKU_CODE,
       UCWORD(B.BRAND_NAME) BRAND_NAME,
       LOWER(TRIM(A.UNIT)) UNIT,
       INITCAP(TRIM(A.PK_SIZE)) PK_SIZE,
       trim(A.DF_SALE_RATE) DF_SALE_RATE,
       trim(A.MRP) MRP,
       INITCAP(trim(A.CAT_TYPE)) CAT_TYPE,
       NVL(MAX_QTY,25) MAX_QTY,
       A.BAL_QTY 
FROM GET_PRODUCT A,
     WEB_BRANDS B 
WHERE A.P_CODE in (".$p_codes.") 
  AND A.BR_CODE = '".BR_CODE."' 
  AND A.BRAND_CODE = B.BRAND_CODE 
  GROUP BY 
  trim(A.P_CODE) ,
        INITCAP(trim(A.ALTERNATE_TEXT)),
        trim(A.LINKED_SKU_CODE) ,
        UCWORD(B.BRAND_NAME) ,
        LOWER(TRIM(A.UNIT)),
        INITCAP(TRIM(A.PK_SIZE)),
        trim(A.DF_SALE_RATE) ,
        trim(A.MRP) MRP,
        INITCAP(trim(A.CAT_TYPE)) ,
        NVL(MAX_QTY,25),
        A.BAL_QTY