Hola grupo
Tengo un problema con algo aqui y quisiera ver si me pueden dar una mano con
esto.
Tengo una tabla llamada Consumo la cual es alimentada por un DTS que
introduce todos los datos en ellas, tengo un caso y es el siguiente.
Cada vez que se haga un insert en la tabla consumo el campo que dice
Potencia de la tabla Consumo sera igual al average de las dos potencia mas
alta durante los ultimos 12 meses que han pasado en el caso que esta sean
mayor que la potencia que se inserto, en caso de ser menor se queda la
potencia que se inserto.
entonces en la tabla consumo se hace todo el insert sin hacer ninguna
comparacion es decir el campo potencia se inserta tal como viene, luego creo
una vista llamada ConsumoAP para hacer los calculos.
Para que se pueda entende mejor este proyecto es para facturar la energia
electrica consumida por un usuario,como ya saben todos los meses se le cobra
lo que consumieron y si la potencia que consumieron es mayor que las dos mas
alta en los ultimos doces meses entonces se le cobra esa, de lo contario se
le cobraria el average.
Al principio el campo Potencia se tenia que extraer la maxima que asi es que
estas esta vista.
SELECT dbo.Consumo.ConsumoID, dbo.Consumo.Fecha, dbo.Consumo.ClienteID,
dbo.Consumo.Mes, dbo.Consumo.Año, dbo.Consumo.Reactiva,
dbo.Consumo.Energia, MAX(C2.Fecha) AS
FechaConsumoAnterior,
(SELECT MAX(Potencia)
<-Esta parte es la que quiero sustituir por el
average
FROM Consumo C2
WHERE C2.Clienteid = Consumo.ClienteId) AS
Max_Potencia,
(SELECT MAX(Potencia_Punta)
FROM Consumo C2
WHERE C2.Clienteid = Consumo.ClienteId) AS
Max_PotenciaPunta
FROM dbo.Consumo LEFT OUTER JOIN
dbo.Consumo C2 ON dbo.Consumo.ClienteID = C2.ClienteID
AND dbo.Consumo.Fecha > C2.Fecha
GROUP BY dbo.Consumo.ConsumoID, dbo.Consumo.Fecha, dbo.Consumo.ClienteID,
dbo.Consumo.Mes, dbo.Consumo.Año, dbo.Consumo.Reactiva,
dbo.Consumo.Energia
Vista de Consumo
CREATE TABLE [dbo].[Consumo] (
[ConsumoID] [int] IDENTITY (1, 1) NOT NULL ,
[ClienteID] [int] NOT NULL ,
[Fecha] [datetime] NOT NULL ,
[Energia] [decimal](18, 2) NULL ,
[Reactiva] [decimal](18, 2) NULL ,
[Potencia] [decimal](18, 2) NULL ,
[Potencia_punta] [decimal](18, 2) NULL ,
[Mes] AS (case (datepart(month,[fecha])) when '01' then 'Enero' when '02'
then 'Febrero' when '03' then 'Marzo' when '04' then 'Abril' when '05' then
'Mayo' when '06' then 'Junio' when '07' then 'Julio' when '08' then 'Agosto'
when '09' then 'Septiembre' when '10' then 'Octubre' when '11' then
'Noviembre' when '12' then 'Diciembre' end) ,
[Año] AS (datename(year,[fecha])) ,
[FechaInsertacion] [datetime] NULL ,
[Usuario] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
Leer las respuestas