SQL Server - La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=,

 
Vista:

La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=,

Publicado por JACK (1 intervención) el 17/10/2022 17:28:02
SELECT R.[AÑO ATENCION], R.[MES ATENCION], R.[PAGO PACIENTE], R.[PAGO ASEGURADORA],
R.[NRO ATENCIONES], R.[NRO PACIENTES], R.[PROM PAG PACIENTE],
[VALOR ACTUAL] = (R.[NRO ATENCIONES] * R.[PROM PAG PACIENTE]),
[VALOR REAL] = CASE WHEN R.[NRO AFILIADOS] > 0
THEN (R.[PRIMA PROM] * R.[NRO AFILIADOS])
ELSE (R.[PRIMA PROM] * R.PROMAFIL) END,
OPORTUNIDAD = CASE WHEN R.[NRO AFILIADOS] > 0
THEN ((R.[PRIMA PROM] * [NRO AFILIADOS]) - (R.[NRO ATENCIONES] * R.[PROM PAG PACIENTE]))
ELSE ((R.[PRIMA PROM] * R.PROMAFIL) - (R.[NRO ATENCIONES] * R.[PROM PAG PACIENTE])) END,
PORC = CASE WHEN R.[NRO AFILIADOS] > 0
THEN (CONVERT(DECIMAL(10,2),(CONVERT(DECIMAL(10,2),R.[NRO ATENCIONES])
* CONVERT(DECIMAL(10,2),100))))
/ CONVERT(DECIMAL(10,2),R.[NRO AFILIADOS])
ELSE (CONVERT(DECIMAL(10,2),(CONVERT(DECIMAL(10,2),R.[NRO ATENCIONES])
* CONVERT(DECIMAL(10,2),100))))
/ CONVERT(DECIMAL(10,2),R.PROMAFIL)END,
[NRO ATRASOS] = (R.[NRO ATENCIONES] - R.[NRO PACIENTES]),
[NRO AFILIADOS] = CASE WHEN R.[NRO AFILIADOS] > 0 THEN R.[NRO AFILIADOS] ELSE R.PROMAFIL END,
R.[PRIMA PROM],
[INGRESO POTENCIAL] = CASE WHEN R.[NRO AFILIADOS] > 0
THEN (R.[NRO AFILIADOS] * R.[PRIMA PROM])
ELSE (R.PROMAFIL * R.[PRIMA PROM]) END
FROM(
SELECT A.[AÑO ATENCION], A.[MES ATENCION], [PAGO PACIENTE] = SUM(A.[PAGO PACIENTE]),
[PAGO ASEGURADORA] = SUM(A.[PAGO ASEGURADORA]),
[NRO ATENCIONES] = SUM(A.FLAGATENCION),
[NRO PACIENTES] = COUNT(A.FLAGHC),
[PROM PAG PACIENTE] = ROUND(AVG(A.[PAGO PACIENTE]),2),
T.[PRIMA PROM],
ISNULL((
SELECT VALOR FROM BI_PS_Variables
WHERE CODIGO = 2 AND CONVERT(INT,VALORCAMPO1) = A.[AÑO ATENCION]
AND CONVERT(INT,VALORCAMPO2) = A.[MES ATENCION]),0) AS [NRO AFILIADOS],
(SELECT SUM([PAGO PACIENTE]) FROM BI_PS_Estadistico
WHERE [CODORIGEN] = 'PM' AND TIPO = 'PLANES' AND [AÑO ATENCION] = A.[AÑO ATENCION]) AS [TOTAL PAGO PACIENTE],
ROUND((SELECT AVG(VALOR) FROM BI_PS_Variables
WHERE CODIGO = 2 AND CONVERT(INT,VALORCAMPO1) = A.[AÑO ATENCION]),0) AS PROMAFIL
FROM(
SELECT [AÑO ATENCION], [PRIMA PROM] = ROUND(AVG([PAGO PACIENTE]),2)
FROM BI_PS_Estadistico
WHERE [CODORIGEN] = 'PM' AND TIPO = 'PLANES'
GROUP BY [AÑO ATENCION]
)T
INNER JOIN BI_PS_Estadistico A ON A.[AÑO ATENCION] = T.[AÑO ATENCION]
WHERE A.[CODORIGEN] = 'PM' AND TIPO = 'PLANES'
GROUP BY A.[AÑO ATENCION], A.[MES ATENCION], T.[PRIMA PROM]
)R
ORDER BY 1,2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=,

Publicado por Jorge (6 intervenciones) el 19/10/2022 05:16:32
una de tus subsoncultas regresa mas de un valor, lo cual no es permitido, revisalas y en su caso , amplias el where de la subconsulta o utilizas un top 1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar