Jump to content


Photo

Conteo de registros por condición


  • Please log in to reply
3 replies to this topic

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 21 September 2016 - 02:21 PM

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 posts
  • Location127.0.0.1

Posted 21 September 2016 - 03:10 PM

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
  • 7419 posts
  • LocationRepública Dominicana

Posted 21 September 2016 - 05:01 PM

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
  • 14448 posts
  • LocationMéxico

Posted 21 September 2016 - 05:03 PM

Ah mira.....

 

Interesante uso de la función WITH()

 

:tongue:  :lipsrsealed:

 

Saludos


  • 0




IP.Board spam blocked by CleanTalk.