Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.16;
Скачать: CL | DM;

Вниз

Помогите с запросом   Найти похожие ветки 

 
Maxxx   (2003-05-26 07:15) [0]

Здравствуйте Уважаемые Мастера!
Есть таблица с начислениями абонентов. В ней храниться код абонента, дата начисления, сумма начисления. Как мне получить дату последнего начисления и сумму последнего начисления?

я делаю:
select code, max(date) from table
group by code
получаю список абонентов с последней датой.
Как получить сумму, соответсвующей этой дате?
Спасибо.


 
Наталия ©   (2003-05-26 07:51) [1]

Может, так:
select my_summ
from table
inner join
(select code, max(date) d from table
group by code) as t
on table.code=t.code and table.date=t.d


 
Maxxx   (2003-05-26 07:58) [2]

А решения без вложенного запроса существуют?


 
Zacho ©   (2003-05-26 08:57) [3]


> Maxxx (26.05.03 07:15)

Примерно так:
SELECT ... FROM TABLE WHERE DATE=(SELECT MAX(DATE) FROM TABLE)

> Наталия © (26.05.03 07:51)

Насколько мне известно, такой синтаксис IB не поддерживает.

> Maxxx (26.05.03 07:58)

В IB 6.x - нет, разве что хранимой процедурой. А в FB - можно с помощью FIRST.


 
Johnmen ©   (2003-05-26 10:18) [4]

SELECT A.id, A.s, MAX(B.d)
FROM Table A, Table B
WHERE (A.id=B.id) AND (A.d=(SELECT MAX(C.d) FROM Table C WHERE C.id=A.id))
GROUP BY A.id, A.s


где id - код абонента, s - сумма начисления, d - дата начисления.


 
Zacho ©   (2003-05-26 10:23) [5]


> Johnmen © (26.05.03 10:18)

А зачем еще и внутренний джоин ?
Имхо, вполне достаточно SELECT * FROM TABLE WHERE D=(SELECT MAX(D) FROM TABLE)


 
Johnmen ©   (2003-05-26 10:44) [6]

>Zacho © (26.05.03 10:23)
>А зачем еще и внутренний джоин ?

Просто попробуй написать запрос в ключе "вполне достаточно ...", причем обрати внимание, что надо для всех абонентов...:)



 
Zacho ©   (2003-05-26 10:49) [7]


> Johnmen © (26.05.03 10:44)

Да, согласен, сначало не обратил внимания.


 
Yuriy Der   (2003-05-27 04:57) [8]

А если было несколько начислений с последней датой ?
Правильнее запрос делать так:

select date, sum(code)
from table
where date in (select max(date) from table)
group by date;


 
Yuriy Der   (2003-05-27 05:02) [9]

Прошу, прощения не "in", а "=" !!

select date, sum(code)
from table
where date = (select max(date) from table)
group by date;


 
Maxxx   (2003-05-27 06:31) [10]

Дело в том, что этот запрос будет вложенный и возвращать в нем надо одно поле.


 
off ©   (2003-05-27 07:44) [11]

До боли знакомый вопрос!!!


 
Johnmen ©   (2003-05-27 10:13) [12]

>Yuriy Der (27.05.03 04:57)
>А если было несколько начислений с последней датой ?

Будут выведены все эти начисления, что полностью соответствует логике корректного ответа на вопрос.

А тот запрос, что ты привел, ничего общего с решением вопроса не имеет...:)



Страницы: 1 вся ветка

Текущий архив: 2003.06.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
14-50438
SH
2003-05-29 14:14
2003.06.16
Уменьшение объёма exe-файлов


1-50328
Uran
2003-06-03 13:36
2003.06.16
Проверка вхождения цифр


1-50285
AbrosimovA
2003-06-04 14:27
2003.06.16
Помогите разобраться с типизиров. и нетипизир. файлами


7-50544
Seb_Kost
2003-04-07 09:28
2003.06.16
Проблемка с TurboAsync


8-50404
greenrul
2003-03-03 20:10
2003.06.16
Как понизить системную громкость?