Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.028 c
15-1152180840
Cashmare
2006-07-06 14:14
2006.08.06
Убрать автовывод


3-1149163023
Hadroran
2006-06-01 15:57
2006.08.06
Динамические LookUp поля


2-1153328997
learner
2006-07-19 21:09
2006.08.06
NamedPipe информация о подсоединившемся клиенте.


2-1152841836
Toy
2006-07-14 05:50
2006.08.06
DBText и DBComboBox


5-1137169356
olegz77
2006-01-13 19:22
2006.08.06
Свойство ImageIndex




   Наверх