powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите с запросом
4 сообщений из 4, страница 1 из 1
Помогите с запросом
    #39043673
kassak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Имеется задача - написать select запрос для таблицы counter_pok.
В таблице имеются поля: number (номер счетчика), pok (показания) и d_enter (дата ввода). Ограничений на поля нет. Требуется написать запрос для вывода для каждого номера счетчика максимальное значение даты (т.е. сгруппировать по number).
Есть вариант: SELECT number, MAX(d_enter) FROM counter_pok GROUP BY number;
Выведет таблицу из двух колонок: number и MAX. Но мне нужно чтобы вывелась таблица из трех колонок: номер счетчика number, максимальная дата d_enter для каждого счетчика и показания для максимального значения (pok). Как это сделать? Заранее спасибо.
...
Рейтинг: 0 / 0
Помогите с запросом
    #39043678
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кучно пошли.
из одной группы наверное.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите с запросом
    #39043687
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диагноз: плохо спроектированная база ногам покоя не даёт. Раздели таблицу на две:
"последние значения" и "история значений". Вторую веди триггерами. Запрос станет тривиальным.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите с запросом
    #39043697
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kassak,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
with counter_pok(number, pok, d_enter) as (
   select 1, 123, date '01.01.2003' from rdb$database
   union all
   select 2, 124, date '01.02.2003' from rdb$database
   union all
   select 1, 125, date '01.03.2003' from rdb$database
   union all
   select 3, 126, date '01.04.2003' from rdb$database
   union all
   select 1, 127, date '01.05.2003' from rdb$database
   union all
   select 2, 128, date '01.06.2003' from rdb$database
   union all
   select 3, 129, date '01.07.2003' from rdb$database
),
t as (
select
  number,
  pok,
  d_enter,
  max(d_enter) over(partition by number) as d
from counter_pok)
select
  number,
  pok,
  d_enter
from t
where d_enter = d
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите с запросом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]