Форум: "Базы";
Текущий архив: 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.012 c