我正在尝试将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表达式
请指出我正确的方向或指出我犯错的地方。
答案 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