Главная страница
    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.011 c
15-1150354588
ilya39
2006-06-15 10:56
2006.08.06
Стоит ли ехать в Питер перед саммитом G8?


3-1149160684
ganda
2006-06-01 15:18
2006.08.06
SQL - запрос


2-1152800293
K_Lock
2006-07-13 18:18
2006.08.06
Выделение строк таблицы разным цветом по времени


1-1151182022
AlexeyT
2006-06-25 00:47
2006.08.06
TImage: баг с иконками большими 32х32


2-1153168935
GanibalLector
2006-07-18 00:42
2006.08.06
OLE Automation





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