Navegador de Archivos
Calendario del Blog
General
Common Table Expressions
Ya pasaron unos cuantos años desde mis primeros roses con SQL y actualmente creo que puedo manejar con soltura algunas cosillas monas dentro del mismo.
Recuerdo cuando me pedían algo en el trabajo y yo me la pasaba super entretenido leyendo sobre SQL porque no encontraba la manera de resolver mis problemas, ahora que lo veo creo que tan simple y que solo requería leer un poco las especificaciones del lenguaje, practicar un poco y listo!
Ahora que me puse a hacer más consultas encontré algunas cosas monas y las quiero compartir, aunque sea de una por una. Hoy hablaré en este breve post de Common Table Expression:
Que tal si tenemos una consulta medio entretenida y queremos unirla con otra que es algo simple pero que si las metemos en una sola consulta ... saz! ... cuando queremos retomar la lógica nos cuesta trabajo, ejemplo.
Tenemos reclamos que ver por mes para sacar estadísticas de nuestro servicio.
SELECT Month(FechaAltaReclamo) AS Month
,ReclamoId
,SUM(Monto) AS Monto
FROM HistorialReclamo
GROUP BY
FechaAltaReclamo
,ReclamoId
Y lo queremos unir con algo que nos permita ver los montos que se han pagado en una sola exhibición
SELECT Month(FechaPago) AS Month
,ReclamoId
,SUM(Monto) AS Monto
FROM HistorialPagos
WHERE Estatus = 3 -- 3 es igual a cubierto
GROUP BY
FechaPago
,ReclamoId
Ahora queremos hacer una comparativa de ambos pero nos gustaría verlo en un solo paso, tal vez una vista.
WITH
Reclamos(FechaReclamo, ReclamoId, Monto) AS (
SELECT Month(FechaAltaReclamo) AS Month
,ReclamoId
,SUM(Monto) AS Monto
FROM HistorialReclamo
GROUP BY
FechaAltaReclamo
,ReclamoId
)
SELECT H.UserName, R.FechaReclamo, R.ReclamoId, R.Monto AS MontoReclamo
FROM Reclamos AS R
INNER JOIN HistorialPagos AS H ON R.ReclamoId = H.ReclamoId
WHERE R.Monto = H.Monto
Con esto podemos obtener una consulta clara y sin broncas, en Oracle me parece que acepta la consulta anidada, pero en SLQ 2005 es una sola tabla en with, después investigaré algo más y lo posteo.
Code It!
Recuerdo cuando me pedían algo en el trabajo y yo me la pasaba super entretenido leyendo sobre SQL porque no encontraba la manera de resolver mis problemas, ahora que lo veo creo que tan simple y que solo requería leer un poco las especificaciones del lenguaje, practicar un poco y listo!
Ahora que me puse a hacer más consultas encontré algunas cosas monas y las quiero compartir, aunque sea de una por una. Hoy hablaré en este breve post de Common Table Expression:
Que tal si tenemos una consulta medio entretenida y queremos unirla con otra que es algo simple pero que si las metemos en una sola consulta ... saz! ... cuando queremos retomar la lógica nos cuesta trabajo, ejemplo.
Tenemos reclamos que ver por mes para sacar estadísticas de nuestro servicio.
SELECT Month(FechaAltaReclamo) AS Month
,ReclamoId
,SUM(Monto) AS Monto
FROM HistorialReclamo
GROUP BY
FechaAltaReclamo
,ReclamoId
SELECT Month(FechaPago) AS Month
,ReclamoId
,SUM(Monto) AS Monto
FROM HistorialPagos
WHERE Estatus = 3 -- 3 es igual a cubierto
GROUP BY
FechaPago
,ReclamoId
WITH
Reclamos(FechaReclamo, ReclamoId, Monto) AS (
SELECT Month(FechaAltaReclamo) AS Month
,ReclamoId
,SUM(Monto) AS Monto
FROM HistorialReclamo
GROUP BY
FechaAltaReclamo
,ReclamoId
)
SELECT H.UserName, R.FechaReclamo, R.ReclamoId, R.Monto AS MontoReclamo
FROM Reclamos AS R
INNER JOIN HistorialPagos AS H ON R.ReclamoId = H.ReclamoId
WHERE R.Monto = H.Monto
Code It!
Trackback URI: http://es.iver.com.mx/index.php/trackback/149
Estadísticas de visitantes








Comentarios Recientes
- Celulares con Wifi en Como escoger el amor de tu vida.
- master en La diferencia entre un amigo y un novio
- Iván Jaimes en Internet Explorer 8 y la vista compatibilidad
- mauro en Internet Explorer 8 y la vista compatibilidad
- Iván Jaimes en ¿Qué hacer para que te valoren más?
- marcela en ¿Qué hacer para que te valoren más?
- Iván Jaimes en
- karyot en Haces ruido o te gusta volar?
- Iver en Haces ruido o te gusta volar?
- leo_on en Haces ruido o te gusta volar?
- Iván Jaimes en Los detalles hacen la diferencia
- linuxman en Los detalles hacen la diferencia
- Marcelo Araújo en Internet Explorer 8 y la vista compatibilidad
- Iván Jaimes en Código con aroma de mujer
- karyot en Código con aroma de mujer
- Profesor Mamelowsky en Código con aroma de mujer
- karyot en Lo sabroso de la vida
- Iván Jaimes en
- Iván Jaimes en Internet Explorer 8 y la vista compatibilidad
- cordoba en Internet Explorer 8 y la vista compatibilidad

Dejar un comentario