Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Вниз

SQL выборка из таблицы с датами последнего изменения   Найти похожие ветки 

 
WG   (2006-05-30 09:21) [0]

Мастера, не пинайте, знаю, что с такими вопросами обычно отправляют на RTFM, но книжки под рукой нет и вопрос срочный.

Есть некая база, содержащая следующие поля: "дебитор", "признак дебитора", "сумма", "дата последнего изменения". Задача - построить по признаку дебитора таблицу типа "дата", "сумма по всем дебиторам". Первое что приходит в голову - выбрать дебиторов по признаку, потом циклом тупо перебрать даты и дебиторов и просуммировать. Но есть подозрение, что все это с полпинка решается еще на уровне SELECT. Не мог бы кто подтвердить или опровергнуть это подозрение ?


 
Ega23 ©   (2006-05-30 09:23) [1]

Group By + F1


 
ЮЮ ©   (2006-05-30 09:36) [2]


>  построить по признаку дебитора таблицу типа "дата", "сумма
> по всем дебиторам".

И какой интервал   "дата" ? от 0 до GetDate() ?
И какое соотношение между "дата последнего изменения" и "дата" ?.

Пусть например "дата последнего изменения"  = 02.02.06
Должна ли эта запись суммироваться для  01.02.06, 02.02.06, 03.02.06 ?
Что именно хочешь получить в "сумма
> по всем дебиторам" для конкретного значения  "дата"?


 
WG   (2006-05-30 09:55) [3]


> И какой интервал   "дата" ? от 0 до GetDate() ?


Ну в общем да.


> И какое соотношение между "дата последнего изменения" и
> "дата" ?.


Произвольный. Может вообще последний раз дебиторка менялась два года назад.


> Пусть например "дата последнего изменения"  = 02.02.06
> Должна ли эта запись суммироваться для  01.02.06, 02.02.
> 06, 03.02.06 ?


Должна суммироваться в 02.02.06 и 03.02.06. На 01.02 будет искаться какое-нибудь ближайшее, 25.01, к примеру.


> Что именно хочешь получить в "сумма
> по всем дебиторам" для конкретного значения  "дата"?


Именно сумму по всем дебиторам с заданным признаком на данную дату.


 
WG   (2006-05-30 09:56) [4]


> Пусть например "дата последнего изменения"  = 02.02.06
> Должна ли эта запись суммироваться для  01.02.06, 02.02.
> 06, 03.02.06 ?


Уточню - в 03.02.06 она суммируется только если нет записи с датой 03.02.06.


 
ЮЮ ©   (2006-05-30 10:56) [5]

SELECT SUM(Debits.Debt) FROM
 (
   SELECT Debtor, Max(ChangeDate) ChangeDate
   FROM Debits
   WHERE (ChangeDate <= @OnDate) AND (IsDebtor = 1)
   GROUP BY Debtor
 ) lastChange /* дата последней корректировки */
 JOIN Debits ON
   (lastChanged.Debtor = Debits.Debtor) AND
   (lastChanged.ChangeDate = Debits.ChangeDate)
   /* не должно быть два изменения на одну дату у одного и того же дебитора */


Где  "дебитор", "признак дебитора", "сумма", "дата последнего изменения".
      Debtor            IsDebtor               Debt              ChangeDate


 
WG   (2006-05-30 12:50) [6]

2 ЮЮ
Сэнкс ! Буду пробовать.



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

Форум: "Базы";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.01 c
1-1151265041
Nic
2006-06-25 23:50
2006.08.06
JPG в TBitMap при работе с Timage


3-1148968666
Still Swamp
2006-05-30 09:57
2006.08.06
Как до FireBird добраться через ADO?


2-1153077707
Footballer
2006-07-16 23:21
2006.08.06
НЕ МОГУ ГДЕ СКАЧАТЬ НАЙТИ RAIZE COMPONENT


2-1153252646
crazy_corpse
2006-07-18 23:57
2006.08.06
Java


1-1151314419
ujhtw
2006-06-26 13:33
2006.08.06
Работа с изображением





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский