помогите глупому как запрос сделать

etsilop
Дата: 13.08.2003 14:37:26
есть таблица
id|date |value
-+-----------+-----
1|2003.03.01 |10
1|2003.04.01 |11
2|2003.01.01 |12
2|2003.02.01 |13
3|2003.03.01 |14
3|2003.04.01 |15
3|2003.05.01 |16
нужно выбрать id,max(date),value в vfp например пишем
select id,max(date),value from t1 group by date - всё замечательно,
этот же запрос в postgresql приводит к ошибке
ERROR: Attribute t1.value must be GROUPed or used in an aggregate function
если группировать еще и по value - вылезет вся таблица...
как сделать правильный запрос??? скоро голову сломаю
Stellar.
Дата: 13.08.2003 14:49:57
SELECT id, date, value FROM t1 WHERE date = SELECT MAX(date) FROM t1;
etsilop
Дата: 13.08.2003 15:26:51
сорри ошибся в вопросе
select id,max(date),value from t1 group by id

этот запрос выдаст только 1 строчку, а нужны только строки с уникальным id и максимальной дате, соответствующей каждому id. Т.е. из таблицы
id|date |value
-+-----------+-----
1|2003.03.01 |10
1|2003.04.01 |11
2|2003.01.01 |12
2|2003.02.01 |13
3|2003.03.01 |14
3|2003.04.01 |15
3|2003.05.01 |16

нужно получить

id|date |value
-+-----------+-----
1|2003.04.01 |11
2|2003.02.01 |13
3|2003.05.01 |16
mg&sv
Дата: 14.08.2003 06:41:04
если есть PK в таблице можно так:

select * FROM tb1 f
where f.PK in (select s.PK from tb1 s
where s.id = f.id and s.date = (select MAX(t.date) from tb1 t where t.id = f.id))

не думаю, что это лучший способ, но голова забита не тем (см. форум).
Nik V. Polonski
Дата: 18.08.2003 14:55:46
тут погляди