Я работаю с PL / SQL (Oracle).
Я уже писал запросы, но я не уверен, что не так с этим запросом. Я получаю следующую ошибку:
[Ошибка] Выполнение (942: 41):
ORA-00979: не выражение GROUP BY.
Выделенный текст: первая функция TRIM в операторе case. Я знаю, что не могу поместить этот оператор case в предложение Group By, потому что я агрегирую здесь (используя функцию sum). Есть что-то, чего я не понимаю ??
SELECT
T.PLANNAME,
M.CLASS,
M.BRAND_OR_GENERIC,
T.PROCEDURECODE,
M.BRAND_NAME,
M.GENERIC_NAME,
CASE
WHEN (TRIM(PLANNAME) = 'XXXX' AND TRIM(LOBDESC) = 'COMMERCIAL') THEN ROUND((SUM(ALLOWEDAMT)/160000)*1000000, 2)
WHEN (TRIM(PLANNAME) = 'XXXX' AND TRIM(LOBDESC) = 'MEDICARE') THEN ROUND((SUM(ALLOWEDAMT)/14000)*1000000, 2)
WHEN (TRIM(PLANNAME) = 'YYYY' AND TRIM(LOBDESC) = 'COMMERCIAL') THEN ROUND((SUM(ALLOWEDAMT)/1800000)*1000000, 2)
WHEN (TRIM(PLANNAME) = 'YYYY' AND TRIM(LOBDESC) = 'MEDICARE') THEN ROUND((SUM(ALLOWEDAMT)/35000)*1000000, 2)
WHEN (TRIM(PLANNAME) LIKE 'ZZZZ%' AND TRIM(LOBDESC) = 'COMMERCIAL') THEN ROUND((SUM(ALLOWEDAMT)/1200462)*1000000, 2)
WHEN (TRIM(PLANNAME) LIKE 'ZZZZ%' AND TRIM(LOBDESC) = 'MEDICARE') THEN ROUND((SUM(ALLOWEDAMT)/235000)*1000000, 2)
WHEN (TRIM(PLANNAME) = 'AAAA' AND TRIM(LOBDESC) = 'COMMERCIAL') THEN ROUND((SUM(ALLOWEDAMT)/200000)*1000000, 2)
WHEN (TRIM(PLANNAME) = 'BBBB' AND TRIM(LOBDESC) = 'MEDICAID') THEN ROUND((SUM(ALLOWEDAMT)/147000)*1000000, 2)
END As AllowedPerMM,
SUM(T.ALLOWEDAMT) As SumOfALLOWEDAMT
FROM FIN.TR_2011 T
LEFT JOIN FIN.TR_REFERENCE M ON T.PROCEDURECODE = M.PROCEDURECODE
WHERE
T.PROCEDURECODE IS NOT NULL AND
(T.PROCEDURECODE <> '0' or T.PROCEDURECODE <> 0) AND
(T.PROCEDURECODE Like 'J%' OR
T.PROCEDURECODE Like 'C9%' OR
T.PROCEDURECODE Like 'S0%' OR
T.PROCEDURECODE Like 'Q%' OR
T.PROCEDURECODE = '90378' OR
T.PROCEDURECODE IN (
'J9171', 'J9265', 'J9264',
'J2430', 'J3487',
'J9000', 'J9001') OR
M.THERAPEUTIC_CLASS IN ('RA')
) AND
TRIM(T.YEAR) IN ('2010')
GROUP BY
T.PLANNAME,
M.CLASS,
M.BRAND_OR_GENERIC,
T.PROCEDURECODE,
M.BRAND_NAME,
M.GENERIC_NAME
ORDER BY SumOfALLOWEDAMT DESC ;