Приветствую.
есть MS SQL (вроде, 7 версии) и кучка таблиц в нём.
В одной таблице хранится история изменения группы параметров.
Каждая табличка имеет такие поля:
aDate — дата и время записи
aIndex — номер параметра
aZ — значение параметра
aDost — подходящее ли значение (достоверность).
Записи для каждого параметра (различных значений aIndex) попадают независимо друг от друга. Возможно, на одно время есть несколько различных записей. В сутки примерно 300 штук для каждого значения aIndex.
Чего хочется: хочется запрос для выборки первого значения (aZ) в сутках для каждого параметра (различные aIndex) у которого (aDost > 0). Примерно так:
aDate aIndex aZ aDost
2014-01-01 00:00:06 0 12.6 5
2014-01-01 00:01:10 1 15.1 4
2014-01-01 00:00:02 2 11.8 5
2014-01-02 00:00:11 0 11.6 5
2014-01-02 00:00:41 1 16.1 5
2014-01-02 00:00:35 2 11.9 4
Сейчас реализовал на курсоре — но, мне кажется можно и запрос написать. Помогите мне с ним, если я не ошибаюсь.
Здравствуйте, McQwerty, Вы писали:
MQ>Приветствую.
MQ>есть MS SQL (вроде, 7 версии) и кучка таблиц в нём.
MQ>В одной таблице хранится история изменения группы параметров.
MQ>Чего хочется: хочется запрос для выборки первого значения (aZ) в сутках для каждого параметра (различные aIndex) у которого (aDost > 0). Примерно так:
MQ>aDate aIndex aZ aDost
MQ>2014-01-01 00:00:06 0 12.6 5
MQ>2014-01-01 00:01:10 1 15.1 4
MQ>2014-01-01 00:00:02 2 11.8 5
MQ>2014-01-02 00:00:11 0 11.6 5
MQ>2014-01-02 00:00:41 1 16.1 5
MQ>2014-01-02 00:00:35 2 11.9 4
MQ>Сейчас реализовал на курсоре — но, мне кажется можно и запрос написать. Помогите мне с ним, если я не ошибаюсь.
если правильно понял то что-то вроде (возможны дубли если время совпадает):
select *
from (
select convert(date,aDate) dd, aIndex, min( aDate ) aDate
from table
where aDost > 0
group by convert(date,aDate), aIndex
) t1
join table t2 on t1.aDate = t2.aDate and t1.aIndex = t2.aIndex