
ayuda construcción de Query registro anterior al actual.
Publicado por MARKO (11 intervenciones) el 18/01/2013 19:39:32
Saludos Por adelantado agradezco su ayuda.
Cuento con una base de datos de Microsoft SQL Server 2005 y necesito crear una query de la siguiente manera:
Cuento con dos tablas:
-poe
-ldm
La tabla poe cuenta con los siguientes campos: idgen, fecha, hora, poe y valoracion.
Por cada fecha, el idgen con hora,poe y una valorización pueden aparecer desde 0 hasta 24 veces, o sea 24 registros.
La tabla ldm cuenta con los siguientes campos: idldm (este es correlativo), fecha, idgen, costovarmin, costovarmed y costovarmax.
Por cada fecha el idgen y los costos solo aparecen una vez. pero a su vez por cada fecha hay 197 igen más y cada uno cuenta con sus costos respectivos.
Lo que yo necesito hacer es una consulta de un año completo '2012-01-01' hasta '2012-12-31' en donde el resultado aparezca algo así:
La verdad es que el problema no es muy complejo, ya que las dos tablas se conectan por la fecha y más relevantemente por el idgen, así que la query no es tan difícil.
La dificultad es que para una fecha específica los costos variables que yo necesito no son los del idgen en cuestión sino los costos del registro anterior al idgen mencionado en ldm (aquí se ve la gran importancia que tiene el campo idldm ya que es el correlativo por lo cual lo utilizo para buscar el anterior en la tabla ldm.
A continuación coloco los dos queries que uso para sacar los datos pero no he podido conectarlos.
El query anterior funciona sin complicaciones, pero ahora
este query si me funciona y me da los 3 valores de costos para el idgen anterior en la fecha en cuestión pero:
1) solo sirve para un día y yo lo necesito para un rango de días
2) no tengo idea de cómo conectar los resultados de este query con los resultados del primer query
¿Ideas?
Gracias.
Cuento con una base de datos de Microsoft SQL Server 2005 y necesito crear una query de la siguiente manera:
Cuento con dos tablas:
-poe
-ldm
La tabla poe cuenta con los siguientes campos: idgen, fecha, hora, poe y valoracion.
Por cada fecha, el idgen con hora,poe y una valorización pueden aparecer desde 0 hasta 24 veces, o sea 24 registros.
La tabla ldm cuenta con los siguientes campos: idldm (este es correlativo), fecha, idgen, costovarmin, costovarmed y costovarmax.
Por cada fecha el idgen y los costos solo aparecen una vez. pero a su vez por cada fecha hay 197 igen más y cada uno cuenta con sus costos respectivos.
Lo que yo necesito hacer es una consulta de un año completo '2012-01-01' hasta '2012-12-31' en donde el resultado aparezca algo así:
1
idgen fecha hora poe valoracion costovarmin costovarmed costovarmax
La verdad es que el problema no es muy complejo, ya que las dos tablas se conectan por la fecha y más relevantemente por el idgen, así que la query no es tan difícil.
1
2
3
4
5
6
7
8
9
10
11
12
USE gencos;
Declare @idgen varchar(6);
Set @idgen = '2';
Declare @fechainicio varchar(10);
Set @fechainicio = '2012-01-01';
Declare @fechafin varchar(10);
Set @fechafin = '2012-12-31';
SELECT poe.idgen, poe.fecha, poe.hora, poe.poe, poe.valoracion, ldm.costovarmin, ldm.costovarmed, ldm.costovarmax
FROM poe,ldm
WHERE poe.fecha between @fechainicio and @fechafin and poe.fecha = ldm.fecha and poe.idgen = @idgen and
poe.idgen = ldm.idgen order by fecha, hora;
La dificultad es que para una fecha específica los costos variables que yo necesito no son los del idgen en cuestión sino los costos del registro anterior al idgen mencionado en ldm (aquí se ve la gran importancia que tiene el campo idldm ya que es el correlativo por lo cual lo utilizo para buscar el anterior en la tabla ldm.
A continuación coloco los dos queries que uso para sacar los datos pero no he podido conectarlos.
1
2
3
4
5
6
7
8
9
10
11
12
13
/* este query funciona bien*/
USE gencos
Declare @idgen varchar(6);
Set @idgen = '2';
Declare @fechainicio varchar(10);
Set @fechainicio = '2012-01-01';
Declare @fechafin varchar(10);
Set @fechafin = '2012-12-31';
SELECT fecha, hora, poe, valoracion
FROM poe
WHERE fecha BETWEEN @fechainicio AND @fechafin AND idgen = @idgen order by fecha, hora;
El query anterior funciona sin complicaciones, pero ahora
1
2
3
SELECT TOP(1) costovarmin, costovarmed, costovarmax
FROM ldm
WHERE idldm < (SELECT idldm FROM ldm WHERE idgen= @idgen AND fecha = '2012-01-01') ORDER BY IDLDM DESC;
este query si me funciona y me da los 3 valores de costos para el idgen anterior en la fecha en cuestión pero:
1) solo sirve para un día y yo lo necesito para un rango de días
2) no tengo idea de cómo conectar los resultados de este query con los resultados del primer query
¿Ideas?
Gracias.
Valora esta pregunta


0