Варианты хранения данных в Historian. Storage Metod

Доброго времени суток уважаемые коллеги.
Вопрос в разном виде уже поднимался на форуме.
Делаю отчёты. Сделал свою таблицу в MSSQL.
CREATE TABLE [dbo].[MyTable](
[ID] [int] IDENTITY NOT NULL,
[DT] [smalldatetime] NOT NULL,
[PT_304] [float] NULL,
[PT_305] [float] NULL
) ON [PRIMARY]
Сделал хранимую процедуру для передачи данных с Historian в свою таблицу MyTable.
Хотел сделать просто и легко job запускаемый раз в минуту вида
Insert Into MyTable
SELECT DateTime, PT_304, PT_305, PT_306
FROM
(SELECT DateTime, tagname, value FROM history where tagname='PT_304' OR tagname='PT_305' OR tagname='PT_306' ) AS req
PIVOT
(avg(value)FOR tagname IN( PT_304, PT_305, PT_306)) AS pvt
ORDER BY pvt.DateTime
Дело в том, что если какое либо из значений не поменялось в PLC, то результат возвращается NULL
2013-03-20 10:35:18.243 NULL NULL 30.2000007629395
2013-03-20 10:35:23.243 NULL NULL 30.7999992370605
2013-03-20 10:35:28.243 NULL NULL 25.2000007629395
т.е. чтобы выдернуть действительное значение надо для каждого найти когда оно последний раз было, считать значение в это время
присвоить его переменной, потом уже делать Insert вставляя values каждого значения.
Хранимая процедура разрастётся. Ладно если сигналов не так много. А если их действительно много?
уже пробовал все виды Storage Metod. Cyclic ставлю 5 секунд. Честно пишет каждые 5 секунд, но только если значение поменялось.
Как сделать, чтобы значение писалось всегда?
заранее спасибо.
Вопрос в разном виде уже поднимался на форуме.
Делаю отчёты. Сделал свою таблицу в MSSQL.
CREATE TABLE [dbo].[MyTable](
[ID] [int] IDENTITY NOT NULL,
[DT] [smalldatetime] NOT NULL,
[PT_304] [float] NULL,
[PT_305] [float] NULL
) ON [PRIMARY]
Сделал хранимую процедуру для передачи данных с Historian в свою таблицу MyTable.
Хотел сделать просто и легко job запускаемый раз в минуту вида
Insert Into MyTable
SELECT DateTime, PT_304, PT_305, PT_306
FROM
(SELECT DateTime, tagname, value FROM history where tagname='PT_304' OR tagname='PT_305' OR tagname='PT_306' ) AS req
PIVOT
(avg(value)FOR tagname IN( PT_304, PT_305, PT_306)) AS pvt
ORDER BY pvt.DateTime
Дело в том, что если какое либо из значений не поменялось в PLC, то результат возвращается NULL
2013-03-20 10:35:18.243 NULL NULL 30.2000007629395
2013-03-20 10:35:23.243 NULL NULL 30.7999992370605
2013-03-20 10:35:28.243 NULL NULL 25.2000007629395
т.е. чтобы выдернуть действительное значение надо для каждого найти когда оно последний раз было, считать значение в это время
присвоить его переменной, потом уже делать Insert вставляя values каждого значения.
Хранимая процедура разрастётся. Ладно если сигналов не так много. А если их действительно много?
уже пробовал все виды Storage Metod. Cyclic ставлю 5 секунд. Честно пишет каждые 5 секунд, но только если значение поменялось.
Как сделать, чтобы значение писалось всегда?
заранее спасибо.