У меня есть 2 таблицы, одна из которых содержит идентификаторы счетчиков, а другая содержит измерения для некоторых счетчиков в первой таблице.Это структура таблицы:
MeterConfig:
- MeterID (int)
- MeterNumber (char [16])
- Тип (char [25])
Показания:
- MeterID (int)
- Дата (дата-время)
- Значение (числовое (18,6)))
Мне нужно получить последнее значение (и его дату) из заданного периода для каждого счетчика, а также номер счетчика.Мне удалось сделать это в T-SQL, хотя я не особенно доволен тем, как я сделал это, используя этот запрос:
select distinct
cfg.MeterNumber,
(select top 1 r.Date from Readings as r where r.Date between @startdate and @endDate and r.MeterID = cfg.MeterID order by r.Date desc) as Date,
(select top 1 r.Value from Readings as r where r.Date between @startdate and @endDate and r.MeterID = cfg.MeterID order by r.Date desc) as Value
from
MeterConfig cfg, Readings r1
where cfg.MeterID = r1.MeterID and r1.Date between @startdate and @endDate;
Как я могу сделать это более эффективно?