Problemas con group by
Publicado por speedfroggy (7 intervenciones) el 19/01/2017 10:13:03
Muy buenas.
Tengo esta select y me da error en la group by
SELECT F.COD_PROV,
COUNT (F.RECETA) N_RECETAS,
100 * SUM(DECODE(M.GRUPO_ATC,'C10AA01',SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),0))
/
SUM(DECODE(SIGN(INSTR(M.GRUPO_ATC,'C10AA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C10BX03')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C10AX09')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C10BA02')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD)))))) SIMVAS,
100 * SUM(DECODE(M.GRUPO_ATC,'M01AB05',SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
'M01AE01',SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
'M01AE02',SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD)))
/
SUM(DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AB')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AC')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AE')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AG')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AH')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AX01')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AX02')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AX17')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD))))))))))) AINE,
100 * SUM(DECODE(M.GRUPO_ATC,'A02BC01',SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),0))
/
SUM(DECODE(SIGN(INSTR(M.GRUPO_ATC,'A02BC')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),0)) OME,
100 * SUM(DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09AA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09BA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09BB')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD)))))
/
SUM(DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09AA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09BA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09BB')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09CA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09DA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09DB')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09XA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD))))))))) IECA
FROM COLECTIVO.FARMACIA F,
COLECTIVO.MEDICAMENTO_PART M,
COLEGIADO_ADE_AUX1 C
WHERE F.COD_MEDICAMENTO = M.COD_MEDICAMENTO
AND M.FECHA_NOMEN = TO_DATE('01/07/2016','DD/MM/YYYY')
AND ((M.GRUPO_ATC LIKE 'C10AA%' OR M.GRUPO_ATC IN ('C10BX03','C10AX09','C10BA02'))
OR (M.GRUPO_ATC IN ('M01AB05','M01AE01','M01AE02') OR M.GRUPO_ATC LIKE 'M01AA%' OR M.GRUPO_ATC LIKE 'M01AB%' OR M.GRUPO_ATC LIKE 'M01AC%' OR M.GRUPO_ATC LIKE 'M01AE%'OR M.GRUPO_ATC LIKE 'M01AG%' OR M.GRUPO_ATC LIKE 'M01AH%' OR M.GRUPO_ATC IN ('M01AX01', 'M01AX02', 'M01AX17'))
OR (M.GRUPO_ATC = 'A02BC01' OR M.GRUPO_ATC LIKE 'A02BC%')
OR (M.GRUPO_ATC LIKE 'C09AA%' OR M.GRUPO_ATC LIKE 'C09BA%' OR M.GRUPO_ATC LIKE 'C09BB%' OR M.GRUPO_ATC LIKE ('C09AA%') OR M.GRUPO_ATC LIKE ('C09BA%') OR M.GRUPO_ATC LIKE ('C09BB%')
OR M.GRUPO_ATC LIKE ('C09CA%') OR M.GRUPO_ATC LIKE ('C09DA%') OR M.GRUPO_ATC LIKE ('C09DB%') OR M.GRUPO_ATC LIKE ('C09XA%')))
AND M.DDD IS NOT NULL
AND M.DDD > 0
AND F.FECHA = TO_DATE('01/07/2016','DD/MM/YYYY')
AND F.MOD_ASIST = 'A1'
AND F.COD_COLEGIADO = C.COD_DELEGA||SUBSTR(C.N_COLEGIADO,5,5)
GROUP BY F.COD_PROV,F.RECETA,M.GRUPO_ATC,ENVASES,CONTENIDO,DOSISNUM,DDD
El caso es que si quito la primera columna funciona sin problemas.
¿Alguna idea?
Gracias
Saludos
Tengo esta select y me da error en la group by
SELECT F.COD_PROV,
COUNT (F.RECETA) N_RECETAS,
100 * SUM(DECODE(M.GRUPO_ATC,'C10AA01',SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),0))
/
SUM(DECODE(SIGN(INSTR(M.GRUPO_ATC,'C10AA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C10BX03')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C10AX09')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C10BA02')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD)))))) SIMVAS,
100 * SUM(DECODE(M.GRUPO_ATC,'M01AB05',SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
'M01AE01',SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
'M01AE02',SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD)))
/
SUM(DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AB')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AC')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AE')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AG')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AH')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AX01')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AX02')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'M01AX17')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD))))))))))) AINE,
100 * SUM(DECODE(M.GRUPO_ATC,'A02BC01',SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),0))
/
SUM(DECODE(SIGN(INSTR(M.GRUPO_ATC,'A02BC')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),0)) OME,
100 * SUM(DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09AA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09BA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09BB')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD)))))
/
SUM(DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09AA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09BA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09BB')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09CA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09DA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09DB')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD),
DECODE(SIGN(INSTR(M.GRUPO_ATC,'C09XA')),1,SUM(ENVASES * CONTENIDO * NVL(DOSISNUM,1) / DDD))))))))) IECA
FROM COLECTIVO.FARMACIA F,
COLECTIVO.MEDICAMENTO_PART M,
COLEGIADO_ADE_AUX1 C
WHERE F.COD_MEDICAMENTO = M.COD_MEDICAMENTO
AND M.FECHA_NOMEN = TO_DATE('01/07/2016','DD/MM/YYYY')
AND ((M.GRUPO_ATC LIKE 'C10AA%' OR M.GRUPO_ATC IN ('C10BX03','C10AX09','C10BA02'))
OR (M.GRUPO_ATC IN ('M01AB05','M01AE01','M01AE02') OR M.GRUPO_ATC LIKE 'M01AA%' OR M.GRUPO_ATC LIKE 'M01AB%' OR M.GRUPO_ATC LIKE 'M01AC%' OR M.GRUPO_ATC LIKE 'M01AE%'OR M.GRUPO_ATC LIKE 'M01AG%' OR M.GRUPO_ATC LIKE 'M01AH%' OR M.GRUPO_ATC IN ('M01AX01', 'M01AX02', 'M01AX17'))
OR (M.GRUPO_ATC = 'A02BC01' OR M.GRUPO_ATC LIKE 'A02BC%')
OR (M.GRUPO_ATC LIKE 'C09AA%' OR M.GRUPO_ATC LIKE 'C09BA%' OR M.GRUPO_ATC LIKE 'C09BB%' OR M.GRUPO_ATC LIKE ('C09AA%') OR M.GRUPO_ATC LIKE ('C09BA%') OR M.GRUPO_ATC LIKE ('C09BB%')
OR M.GRUPO_ATC LIKE ('C09CA%') OR M.GRUPO_ATC LIKE ('C09DA%') OR M.GRUPO_ATC LIKE ('C09DB%') OR M.GRUPO_ATC LIKE ('C09XA%')))
AND M.DDD IS NOT NULL
AND M.DDD > 0
AND F.FECHA = TO_DATE('01/07/2016','DD/MM/YYYY')
AND F.MOD_ASIST = 'A1'
AND F.COD_COLEGIADO = C.COD_DELEGA||SUBSTR(C.N_COLEGIADO,5,5)
GROUP BY F.COD_PROV,F.RECETA,M.GRUPO_ATC,ENVASES,CONTENIDO,DOSISNUM,DDD
El caso es que si quito la primera columna funciona sin problemas.
¿Alguna idea?
Gracias
Saludos
Valora esta pregunta
0