Consulta SQL que seleccione registros y "uno más"

Estoy almacenando datos en una tabla SQL Server para control de producción, de forma periódica (cada 5 minutos, por ejemplo) y cuando ocurre un determinado evento (la máquina cambia de estado. Por ejemplo, si pasa de precalentamiento a marcha)

Para realizar un informe, es necesario graficar una serie de datos. Pero surge un problema, supongamos que quiero graficar la temperatura de una máquina concreta cuando está en precalentamiento. Algo similar a ...
SELECT temperatura
FROM tabla
WHERE estado='precalentamiento'

El problema es que pierdo información. Supongamos que guardo un registro a las 13:00 y la máquina cambia de estado a las 13:04.
Esos 4 minutos (13:00-13:04) no se grafican de ninguna forma y necesito hacerlo.

Las columnas de la tabla son "hora", "temperatura", "lote", "estado", entre otros que no creo que sean de utilidad (niveles, sensores, etc).

Se os ocurre la forma de coger el registro siguiente al último que cumple una determinada condición para poder graficar?

Gracias
Hola, no he trabajado con bases de datos usando información de una maquina pero has pensado en usar triggers http://msdn.microsoft.com/es-es/library/ms189799.aspx

PD: Creo que esto iría a PC -> General, pues no creo que SQL Server sea software libre.

Saludos.
aleix_1379 escribió:Hola, no he trabajado con bases de datos usando información de una maquina pero has pensado en usar triggers http://msdn.microsoft.com/es-es/library/ms189799.aspx

PD: Creo que esto iría a PC -> General, pues no creo que SQL Server sea software libre.

Saludos.

Mm un trigger para crear 2 registros en el cambio de estado? Pues es una buena solución, sí.
El lunes lo probare.


PD: no creo que SQL server sea libre pero tampoco es pregunta específica de SQL...
jorcoval escribió:
aleix_1379 escribió:Hola, no he trabajado con bases de datos usando información de una maquina pero has pensado en usar triggers http://msdn.microsoft.com/es-es/library/ms189799.aspx

PD: Creo que esto iría a PC -> General, pues no creo que SQL Server sea software libre.

Saludos.

Mm un trigger para crear 2 registros en el cambio de estado? Pues es una buena solución, sí.
El lunes lo probare.


PD: no creo que SQL server sea libre pero tampoco es pregunta específica de SQL...


Ok, pues ya contaras como te ha ido :)
Algo similar a esto (estoy haciendo pruebas)
   declare @ultima_etapa varchar(50),@penultima_etapa varchar(50), @hora_max datetime
   declare @peso_silo numeric(18,0),@peso_criba numeric(18,0), @peso_filtro_ciclonico numeric(18,0), @caudal float,
      @lote nchar(30),@batch numeric(18,0)

   SELECT @ultima_etapa=subetapa,@hora_max=hora,@peso_silo=peso_silo,@peso_criba=peso_criba,@peso_filtro_ciclonico=peso_filtro_ciclonico,@caudal=caudal,@lote=lote,@batch=batch FROM dbo.carga_MP WHERE subetapa IN
   (SELECT TOP 1 subetapa FROM dbo.carga_MP ORDER BY hora DESC)

   SELECT @penultima_etapa=subetapa FROM dbo.carga_MP WHERE subetapa IN
   (SELECT TOP 1 subetapa FROM dbo.carga_MP WHERE hora<@hora_max ORDER BY hora DESC)

   IF (@ultima_etapa!=@penultima_etapa)
      begin
         INSERT INTO dbo.carga_MP (hora,subetapa,peso_silo,peso_criba,peso_filtro_ciclonico,caudal,lote,batch)
         VALUES(DATEADD(second,-1,@hora_max),@penultima_etapa,@peso_silo,@peso_criba,@peso_filtro_ciclonico,@caudal,@lote,@batch)
         end

Quedaría meterlo en un trigger after insert
4 respuestas