Ir al contenido


Foto

Conteo de registros por condición


  • Por favor identifícate para responder
3 respuestas en este tema

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 21 septiembre 2016 - 02:21

Amigos necesito hacer un conteo estadístico con firebird, el caso es que intervienen dos tablas:

 

- Vehiculos

- CAtegorias

 

El resultado deberia de ser así:

 

               Operativos     Inoperativos    Descargados

Livianos      225                   89                  110

Pesados     122                   15                   91

 

Livianos y Pesados son las categorias, el encabezado son las condiciones en la tabla vehiculos, el conteo no tengo problema, el lio es que la condicion sean las columnas, como en el ejemplo anterior, alguien me echa una mano con un ejemplo sencillo en firebird 2.5? Saludos.


  • 0

#2 sir.dev.a.lot

sir.dev.a.lot

    Advanced Member

  • Miembros
  • PipPipPip
  • 545 mensajes
  • Location127.0.0.1

Escrito 21 septiembre 2016 - 03:10

My Friend..

 

Creo que lo que necesita es esto

https://firebird21.w...na-cross-table/

 

Obviamente tendra que acomodarlo a los campos y tablas que usa.    Espero que sea la pisada para llegar a la meta... ;)

 

Saludos!


  • 1

#3 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 21 septiembre 2016 - 05:01

Muchas gracias sir.dev.a.lot me ha servido de maravillas mi consulta quedó de esta manera:


sql
  1. WITH CONTEO AS (
  2. SELECT
  3. V.VEH_STATUS,
  4. V.VEH_CAT,
  5. COUNT(*) AS TOTAL
  6. FROM
  7. VEHICULOS V
  8. GROUP BY
  9. 1, 2
  10. )
  11.  
  12. SELECT c.cat_nombre, s1.TOTAL AS Operativo, S2.TOTAL AS Inoperativo, s3.TOTAL AS proc_descargo, s4.total AS descargado FROM vehiculos_categoria c
  13. LEFT JOIN conteo s1 ON c.veh_cat = s1.veh_cat AND s1.veh_status IN (1,4)
  14. LEFT JOIN conteo s2 ON c.veh_cat = s2.veh_cat AND s2.veh_status IN (2,3)
  15. LEFT JOIN conteo s3 ON c.veh_cat = s3.veh_cat AND s3.veh_status = 6
  16. LEFT JOIN conteo s4 ON c.veh_cat = s4.veh_cat AND s4.veh_status = 7
  17. WHERE s1.total IS NOT NULL OR s2.total IS NOT NULL OR s3.total IS NOT NULL OR s4.total IS NOT NULL
  18. GROUP BY c.cat_nombre,operativo, inoperativo,proc_descargo, descargado

Saludos.


  • 1

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 21 septiembre 2016 - 05:03

Ah mira.....

 

Interesante uso de la función WITH()

 

:tongue:  :lipsrsealed:

 

Saludos


  • 0




IP.Board spam blocked by CleanTalk.