Re[3]: Выборка первой строки
От: DarkSid Россия  
Дата: 24.05.04 13:49
Оценка: +1
Здравствуйте, Genius_P, Вы писали:

G_P>Здравствуйте, Softwarer, Вы писали:


G_P>>>Как это можно реализовать? (В Access есть агрегатные функции Last, First, если мне не изменяет память).


S>>А какие вопросы остаются, если есть такие функции?

G_P>Извиняюсь забыл сказть что у меня MSSQL, а в нем я таковых не нашел

Мой пример сделан на MSSQL, Вместо First и Last можно использовать TOP 1 с вариантом Order By ID (Desc, ASC). Но нужно проанализировать оба варианта на оптимальность на конкретной БД
Выборка первой строки
От: Genius_P Россия  
Дата: 24.05.04 13:32
Оценка:
Имеется таблица в которой по через имеются записи имеющие по столбцу klient_id несколько значений. например:
id klient_id data1 data2
1 1 .. ..
2 1 .. ..
3 2 .. ..
4 3 .. ..
5 3 .. ..
6 3 .. ..

нужно сгруппировать данные по столбцу klient_id оставляя самую последнюю запись из группируемых, т.е. получить:
id klient_id data1 data2
2 1 .. ..
3 2 .. ..
6 3 .. ..

Как это можно реализовать? (В Access есть агрегатные функции Last, First, если мне не изменяет память).
Re: Выборка первой строки
От: DarkSid Россия  
Дата: 24.05.04 13:37
Оценка:
Здравствуйте, Genius_P, Вы писали:

G_P>Имеется таблица в которой по через имеются записи имеющие по столбцу klient_id несколько значений. например:

G_P>id klient_id data1 data2
G_P>1 1 .. ..
G_P>2 1 .. ..
G_P>3 2 .. ..
G_P>4 3 .. ..
G_P>5 3 .. ..
G_P>6 3 .. ..

G_P>нужно сгруппировать данные по столбцу klient_id оставляя самую последнюю запись из группируемых, т.е. получить:

G_P>id klient_id data1 data2
G_P>2 1 .. ..
G_P>3 2 .. ..
G_P>6 3 .. ..

G_P>Как это можно реализовать? (В Access есть агрегатные функции Last, First, если мне не изменяет память).


SELECT Table1.*
FROM Table1
WHERE (ID IN
(SELECT MAX(ID) AS ID
FROM Table1
GROUP BY klient_id))
Re: Выборка первой строки
От: Softwarer http://softwarer.ru
Дата: 24.05.04 13:42
Оценка:
G_P>Как это можно реализовать? (В Access есть агрегатные функции Last, First, если мне не изменяет память).

А какие вопросы остаются, если есть такие функции?
Re[2]: Выборка первой строки
От: Genius_P Россия  
Дата: 24.05.04 13:45
Оценка:
Здравствуйте, Softwarer, Вы писали:

G_P>>Как это можно реализовать? (В Access есть агрегатные функции Last, First, если мне не изменяет память).


S>А какие вопросы остаются, если есть такие функции?

Извиняюсь забыл сказть что у меня MSSQL, а в нем я таковых не нашел
Re[3]: Выборка первой строки
От: Softwarer http://softwarer.ru
Дата: 24.05.04 13:52
Оценка:
G_P>Извиняюсь забыл сказть что у меня MSSQL, а в нем я таковых не нашел

Хм. В MSSQL вроде бы есть подзапросы. Единственный вопрос, который следует решить — что есть последняя запись. А дальше — например, так:

select
  t.*
from
  test_table t,
  (select client_id, max(record_date) record_date from test_table group by client_id) tt
where
  t.client_id = tt.client_id and t.record_date = tt.record_date


В принципе, то же самое можно написать и в where, тогда будет работать вообще почти на любом сервере — что-нибудь типа where t.record_date = (select max(record_date...), но первый вариант, по-моему, лучше и нагляднее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.