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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Hola.

Creo que pudiste diseñar una tabla del tipo:

Podes hacer una vista con la unión de 4 selects, uno para ruta1, otro para ruta2, y asi... para luego aplicar un sum a esta vista

quedaria algo como:

Código SQL [-]
La vista:

Select ruta1, peso1
  from aaaa
 where ruta1 is not null
union
Select ruta2, peso2
  from aaaa
 where ruta2 is not null
etc.

Luego:

Select ruta, sum(peso)
  from vista_aaaa
 group by ruta;

Yo hubiera preferido hacer una tabla del tipo:

Código:
CREATE TABLE AAAA (
    BOLETA CHAR (8) ,
    ORDEN SMALLINT,
    RUTA CHAR (1) ,
    PESO INTEGER,
    FID INTEGER)
donde orden simplemente seria 1, 2, 3 o 4.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #2  
Antiguo 27-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
jejeje... veo que has llegado a lo mismo
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 27-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Interbase no tiene un condicional IF?

Porque de ser así y si no les importa que el resultado salga en columnas en lugar de filas, se podría hacer algo así sin crear una vista:

Código SQL [-]
select
  sum(if(ruta1='A', peso1, 0)) +
  sum(if(ruta2='A', peso2, 0)) +
  sum(if(ruta3='A', peso3, 0)) +
  sum(if(ruta4='A', peso4, 0)) as rutaA,

  sum(if(ruta1='B', peso1, 0)) +
  sum(if(ruta2='B', peso2, 0)) +
  sum(if(ruta3='B', peso3, 0)) +
  sum(if(ruta4='B', peso4, 0)) as rutaB,

  sum(if(ruta1='C', peso1, 0)) +
  sum(if(ruta2='C', peso2, 0)) +
  sum(if(ruta3='C', peso3, 0)) +
  sum(if(ruta4='C', peso4, 0)) as rutaC,

  sum(if(ruta1='D', peso1, 0)) +
  sum(if(ruta2='D', peso2, 0)) +
  sum(if(ruta3='D', peso3, 0)) +
  sum(if(ruta4='D', peso4, 0)) as rutaD
from
  rutas

Resultado:

Código:
rutaA rutaB rutaC ruta D
  54    37    34    8
// Saludos
Responder Con Cita
  #4  
Antiguo 27-05-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Empezado por roman
¿Interbase no tiene un condicional IF?
El IF no, pero FB 1.5 tiene el case (a parte de aconsejar a StartKill migrar de IB 6 a FB 1.5)

Y la cosa quedaría más o menos como dice Román (pero con case)

Código SQL [-]
select
  sum( case ruta1 when 'A' then peso1 else 0 end) +
  sum( case ruta2 when 'A' then peso1 else 0 end) +
  sum( case ruta3 when 'A' then peso1 else 0 end) +
  sum( case ruta4 when 'A' then peso1 else 0 end) as rutaA,

  sum( case ruta1 when 'B' then peso1 else 0 end) +
  sum( case ruta2 when 'B' then peso1 else 0 end) +
  sum( case ruta3 when 'B' then peso1 else 0 end) +
  sum( case ruta4 when 'B' then peso1 else 0 end) as rutaB,
......
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 14:31:39.


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