Я пытаюсь получить данные в течение двух минут каждую минуту, для каждой секунды должны быть данные для mid, sid, pid. если данных нет в течение секунды для каждой комбинации, оно должно возвращать значение IC как ноль. В течение двух минут будет 120 временных интервалов, если данных нет для mid, sid, pid-комбинации для любого временного интервала, который он должен вернуть ноль. Это данные используются для построения линейной диаграммы, если данные отсутствуют, она должна опускаться до нуля.Возврат нуля для временного интервала, если данных нет
CREATE TABLE [dbo].[DeviceData](
[Id] [BIGINT] IDENTITY(1,1) NOT NULL,
[MId] [INT] NOT NULL,
[SId] [INT] NOT NULL,
[PId] [INT] NOT NULL,
[DataTime] [DATETIME] NOT NULL,
[IC] [INT] NOT NULL,
CONSTRAINT [PK_DeviceData] PRIMARY KEY CLUSTERED
(
[Id] ASC
)
SELECT [MId] ,
[SId] ,
[PId] ,
[DataTime] ,
SUM([IC]) AS Value
FROM [DeviceData]
WHERE DataTime BETWEEN DATEADD(MINUTE, -2, GETUTCDATE())
AND GETUTCDATE()
GROUP BY [MId] ,
SID ,
PId ,
[DataTime];
Создать таблицу справки, которая хранит значения 0 - 120. внешнего соединения. – jarlh
@jarlh или CTE? – JohnHC
Это сложнее, чем кажется. Что происходит, когда у вас есть данные с дробной секундой? Или данные, которые находятся в xx: xx: 00: 00 и xx: xx: 00.999? –