Odio hacer un query que me costo hacer y luego no acordarme como hacerlo.
Por alguna razon el haber pasado de SQL Server a Oracle me volvio perezosa con los queries.
Odio que Oracle no tenga Top! Amaba mi top!
La vez pasada necesitaba hacer un query con unos counts especiales y google fue de muy poca ayuda. Eso me sorprendio considerando la cantidad de ejemplos de queries en la red.
Este query sirve para cuando quieres hacer where distintos para cada count en una misma tabla.
Los ejemplos que me daban eran Unions o joins pero yo queria algo simple y limpio.
He aqui el query que mi compaƱero me ayudo a sacar:
Supongamos que tengo un tabla en donde se almacenan diferentes estados. Digamos el estado de un producto donde estado = B es en bodega, T= en tienda, P=pendiente de ingresar a bodega. etc. Yo quiero saber el total de productos por cada estado.
select
idproducto, descripcionProducto,
count(1) as totalProductos,
count(case
when (estado != 'B') then
1
end) as bodega,
count(case
when (estado != 'T') then
1
end) as enTienda,
count(case
when (estado = 'P') then
1
end) as pendiente
from productos
group by Idproducto
Sencillo, rapido y bonito.
Vi ejemplos de If en los parenthesis del count pero no les entendi mucho. Este case es lo mismo y mas comprensible.
Bueno, al menos no se me va olvidar para la proxima!
No comments:
Post a Comment