Cita:
Empezado por Angel.Matilla
¿Puede hacerse un query con un campo calculado en función de otro también calculado?
A ver si me explico mejor. Me interesa sacar un query de este estilo:
Código SQL [-]SELECT A.Municipio, B.Nombre, F.Padron,
(SELECT COUNT(*) FROM Persona
WHERE CodPrv = A.CodPrv AND Junta = C.Codigo AND Situacion IN (SELECT Valor FROM Instalacion WHERE Etiqueta = 'Situacion'
AND Situacion = 1)) Afiliados,
CASE WHEN F.Padron = 0 THEN 0 ELSE 100 * Afiliados / F.Padron END
FROM DatLoc A, HisElec F
WHERE A.Municipio = F.Municipio
AND A.Municipio = 1217
Pero al ejecutar el CASE, lógicamente, me da un error:
¿Como podría montarse el query para que ese CASE llegara a ejecutarse?
|
No le falta "AS" entre el último paréntesis y el campo "Afiliados"??
Código SQL
[-]
WHERE CodPrv = A.CodPrv AND Junta = C.Codigo AND Situacion IN (SELECT Valor FROM Instalacion WHERE Etiqueta = 'Situacion'
AND Situacion = 1)) as Afiliados,
Y la parte del ELSE, no aplica la cuestión algebraica:
Código SQL
[-]
100 * Afiliados / F.Padron
(100 * Afiliados ) / F.Padron
Ahora que lo reescribo...veo que deberias agregar nuevamente toda la sentencia que calcula a "Afiliados", quedaría algo así:
Código SQL
[-]
SELECT A.Municipio, B.Nombre, F.Padron,
(SELECT COUNT(*) FROM Persona
WHERE CodPrv = A.CodPrv AND Junta = C.Codigo AND Situacion IN (SELECT Valor FROM Instalacion WHERE Etiqueta = 'Situacion'
AND Situacion = 1)) Afiliados,
CASE WHEN F.Padron = 0 THEN 0 ELSE ( 100 * (SELECT COUNT(*)
FROM Persona
WHERE CodPrv = A.CodPrv
AND Junta = C.Codigo
AND Situacion IN (SELECT Valor
FROM Instalacion
WHERE Etiqueta = 'Situacion'
AND Situacion = 1))
) / F.Padron END
FROM DatLoc A, HisElec F
WHERE A.Municipio = F.Municipio
AND A.Municipio = 1217
Prueba el Query y nos comentas....
Saludos.