Saludos, Perl en español. 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:
La tabla
poe cuenta con los siguientes campos: idgen, fecha, hora, poe y valoracion.
Por cada
fecha, el
idgen con una
hora, un
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.
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í:
Using text Syntax Highlighting
idgen fecha hora poe valoracion costovarmin costovarmed costovarmax
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
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.
Using sql Syntax Highlighting
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;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
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.
Using sql Syntax Highlighting
/* 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;
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
El
query anterior funciona sin complicaciones, pero ahora
Using sql Syntax Highlighting
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 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*/
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
¿Ideas?
Gracias.