Consulta SQL dificil para mi

25/01/2006 - 12:36 por Juande | Informe spam
Hola amigos,

Tengo la siguiente consulta y que me devuelve estos valores;

SELECT TOP 100 PERCENT dbo.PedidosCli.FECHA_PEDIDO AS Fecha,
SUM(dbo.PedidosCli.IMPORTE_BRUTO) AS Total, dbo.IndicadorHerrajes.Horas
FROM dbo.PedidosCli LEFT OUTER JOIN
dbo.IndicadorHerrajes ON dbo.PedidosCli.FECHA_PEDIDO =
dbo.IndicadorHerrajes.Fecha
WHERE (dbo.PedidosCli.CLIENTE = 9000002)
GROUP BY dbo.IndicadorHerrajes.Horas, dbo.PedidosCli.FECHA_PEDIDO
ORDER BY dbo.PedidosCli.FECHA_PEDIDO DESC

Fecha Total Horas
2006-01-25 138.90 24.0
2006-01-24 1723.23 29.0
2006-01-23 1891.05 28.0
2006-01-20 1703.09 22.0
2006-01-19 219.69 24.0
2006-01-18 950.92 24.0
2006-01-17 1329.95 24.0
.

Pues bien hasta aquí todo correcto pero ahora necesito añadir un nuevo campo
'Ratio5' que por cada fila calcule la suma de Total dividido entre la suma
de Horas de un conjunto de registros que esté comprendido entre la Fecha de
la fila correspondiente menos 5 días, algo así como;

SUM(dbo.PedidosCli.IMPORTE_BRUTO) / SUM(dbo.IndicadorHerrajes.Horas) as
Ratio5 WHERE Fecha (FilaActual) BETWEEN Fecha (FilaActual) AND Fecha
(FilaActual) - 5

No se si me he explicado bien, pero os pongo los resultados como deben
quedar con el campo Ratio5

Fecha Total Horas Ratio5
2006-01-25 138.90 24.0 44.69
2006-01-24 1723.23 29.0 51.09
2006-01-23 1891.05 28.0 49.96
2006-01-22 1703.09 22.0 .
2006-01-21 219.69 24.0 .
2006-01-20 950.92 24.0 .
2006-01-19 1329.95 24.0 .
.

Muchas gracias y un saludo
 

Leer las respuestas

#1 Alejandro Mesa
25/01/2006 - 15:37 | Informe spam
Juande,

Es preferible que en estos casos se postee la estructura de las tablas, data
de ejemplo y resultados esperados, para poder probar la solucion propuesta.


AMB

"Juande" wrote:

Hola amigos,

Tengo la siguiente consulta y que me devuelve estos valores;

SELECT TOP 100 PERCENT dbo.PedidosCli.FECHA_PEDIDO AS Fecha,
SUM(dbo.PedidosCli.IMPORTE_BRUTO) AS Total, dbo.IndicadorHerrajes.Horas
FROM dbo.PedidosCli LEFT OUTER JOIN
dbo.IndicadorHerrajes ON dbo.PedidosCli.FECHA_PEDIDO =
dbo.IndicadorHerrajes.Fecha
WHERE (dbo.PedidosCli.CLIENTE = 9000002)
GROUP BY dbo.IndicadorHerrajes.Horas, dbo.PedidosCli.FECHA_PEDIDO
ORDER BY dbo.PedidosCli.FECHA_PEDIDO DESC

Fecha Total Horas
2006-01-25 138.90 24.0
2006-01-24 1723.23 29.0
2006-01-23 1891.05 28.0
2006-01-20 1703.09 22.0
2006-01-19 219.69 24.0
2006-01-18 950.92 24.0
2006-01-17 1329.95 24.0
..

Pues bien hasta aquí todo correcto pero ahora necesito añadir un nuevo campo
'Ratio5' que por cada fila calcule la suma de Total dividido entre la suma
de Horas de un conjunto de registros que esté comprendido entre la Fecha de
la fila correspondiente menos 5 días, algo así como;

SUM(dbo.PedidosCli.IMPORTE_BRUTO) / SUM(dbo.IndicadorHerrajes.Horas) as
Ratio5 WHERE Fecha (FilaActual) BETWEEN Fecha (FilaActual) AND Fecha
(FilaActual) - 5

No se si me he explicado bien, pero os pongo los resultados como deben
quedar con el campo Ratio5

Fecha Total Horas Ratio5
2006-01-25 138.90 24.0 44.69
2006-01-24 1723.23 29.0 51.09
2006-01-23 1891.05 28.0 49.96
2006-01-22 1703.09 22.0 .
2006-01-21 219.69 24.0 .
2006-01-20 950.92 24.0 .
2006-01-19 1329.95 24.0 .
..

Muchas gracias y un saludo






Preguntas similares