Есть запрос:
Код: Выделить всё
SELECT CASE WHEN P.CODE_TYPE = 1 THEN '1. Зубопротезирование'
WHEN P.CODE_TYPE = 2 THEN '2. Слухопротезирование'
ELSE '3. Не определено' END AS CODE_TYPE
, O.NAME AS REGION
, H.ID_HOSPITAL
, MAX(H.SHORT_NAME) AS HOSPITAL
, SUM(CASE WHEN RE.ID_PARENT IS NOT NULL AND RD.ID_DEFECT IS NULL
THEN 0 ELSE RE.STO END) AS SUM_TOTAL
, (SUM(CASE WHEN RE.IS_DEFECT_T = 1 THEN RE.STO ELSE 0 END) -
SUM(CASE WHEN RE.ID_PARENT IS NOT NULL AND RD.ID_DEFECT IS NULL
THEN RE.STO ELSE 0 END)) AS SUM_DEFECT_T
, SUM(CASE WHEN RE.IS_DEFECT_M = 1 THEN RE.SUM_DEFECT_M ELSE 0 END) AS SUM_DEFECT_M
, SUM(CASE WHEN RDM.SUM_DEFECT IS NULL THEN 0 ELSE RDM.SUM_DEFECT END) AS SUM_DEFECT_M2
, SUM(RE.SUM_PAY - CASE WHEN RDM.SUM_DEFECT IS NULL THEN 0 ELSE RDM.SUM_DEFECT END) AS SUM_PAY
, (SELECT SUM(PM.SUM_PAY)
FROM PAYMENT PM JOIN HOSPITAL_CONTRACT HC ON (PM.ID_HOSPITAL_CONTRACT = HC.ID_HOSPITAL_CONTRACT)
WHERE PM.ID_HOSPITAL = H.ID_HOSPITAL
AND PM.D_DOCUMENT <= :D_END
AND HC.CODE_TYPE = P.CODE_TYPE) AS SUM_PAYMENT
FROM HOSPITAL H
JOIN ROLL R ON (H.ID_HOSPITAL = R.ID_HOSPITAL)
JOIN ROLL_EVENT RE ON (R.ID_ROLL = RE.ID_ROLL)
LEFT JOIN PGG P ON RE.KOD_PGG = P.CODE_PGG
JOIN OKATO O ON (H.ID_OKATO = O.ID_OKATO)
LEFT JOIN ROLL_DEFECT RD ON (RE.ID_ROLL_EVENT = RD.ID_ROLL_EVENT) AND (RD.ID_DEFECT = 60)
LEFT JOIN ROLL_DEFECT_M RDM ON (RE.ID_ROLL_EVENT = RDM.ID_ROLL_EVENT) AND (RDM.D_SAVE <= :D_END)
WHERE R.D_SAVE <= :D_END
AND R.CODE_STATUS <> 0
GROUP BY 1, 2, 3
SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
Если в секции:
Код: Выделить всё
(SELECT SUM(PM.SUM_PAY)
FROM PAYMENT PM JOIN HOSPITAL_CONTRACT HC ON (PM.ID_HOSPITAL_CONTRACT = HC.ID_HOSPITAL_CONTRACT)
WHERE PM.ID_HOSPITAL = H.ID_HOSPITAL
AND PM.D_DOCUMENT <= :D_END
AND HC.CODE_TYPE = P.CODE_TYPE) AS SUM_PAYMENT
Что то я сообразить не могу как это обойти...
Можно конечно через хроник переписать запрос, но не очень хочется это делать...