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

Preguntas similare

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






Respuesta Responder a este mensaje
#2 Juande
25/01/2006 - 16:30 | Informe spam
Ok, gracias Alejandro, aquí te pongo la estructura de las 2 tablas
utilizadas

Tabla PedidosCli
-
CLIENTE
PEDIDO (Clave Principal)
FECHA_PEDIDO
IMPORTE_BRUTO
DTO_COM
IMP_DTOCOM
DTO_PP
IMP_DTOPP
BASE_IMPONIBLE
IVA
IMP_IVA
TOTAL

Tabla IndicadorHerrajes
ID (Clave Principal Autonumérica)
Fecha
Horas

"Alejandro Mesa" escribió en el
mensaje news:
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






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida