Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 10-05-2019
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 608
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por Angel.Matilla Ver Mensaje
¿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 
/*En el camino de la informática olvide que los operadores aritméticos, llevan prioridad?...mmm...no recuerdo ya mis inicios!!!*/

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.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 10-05-2019 a las 16:29:15.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Campos calculados Parsec OOP 4 26-06-2013 13:56:15
TClienDataSet Problemas con Campos Blob y Campos Calculados LEVV Conexión con bases de datos 2 11-05-2012 01:25:43
campos calculados ercrizeporta Conexión con bases de datos 7 11-06-2007 10:51:29
campos calculados Nelly SQL 2 07-10-2005 18:13:51
Campos calculados EITB OOP 1 28-09-2004 00:08:20


La franja horaria es GMT +2. Ahora son las 10:43:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi