Главная страница
    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.46 MB
Время: 0.005 c
6-50428
Snuk
2003-04-11 16:51
2003.06.16
измерить скорость локальной сети


1-50368
Инга
2003-06-04 02:23
2003.06.16
как реализовать цикл for..next с шагом отличным от 1?


1-50372
zsv
2003-06-04 08:50
2003.06.16
Клавиша F1


1-50341
Maniacosaur
2003-05-29 10:11
2003.06.16
Делфи и 1с через OLE


1-50305
Jaxtor
2003-06-03 11:32
2003.06.16
Создание алгоритма для CheckBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский