powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вычисление с датой
13 сообщений из 13, страница 1 из 1
Вычисление с датой
    #39543657
Имеется таблица с подсчётом.
Пытаюсь сделать формулу "Итог = 1+2-3 + Итог Предыдущей даты."
Что то вроде этого
Код: plsql
1.
(SELECT 1 + 2 - 3 + (Select Итог FROM tbl where Дата = DateAdd('d', - 1, Дата) From tbl


Но выдаёт нули. Может потому что DateAdd берет 14.08.2017 которого нет в таблице?
Что можно сделать?
...
Рейтинг: 0 / 0
Вычисление с датой
    #39543700
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
SELECT 1 + 2 - 3 + (Select top(1) Итог FROM tbl where Дата < t.Дата order by Дата asc ) From tbl as t
...
Рейтинг: 0 / 0
Вычисление с датой
    #39543742
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вычисление с датой
    #39543748
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,
а потом гляньте это(весь топик) 20906979
...
Рейтинг: 0 / 0
Вычисление с датой
    #39543898
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkusdku,..а потом гляньте это...
Ух ты, не ждал ни гадал, что и мои примерные примеры, кто то будет в качестве примера приводить.
Похоже пора возгордиться и дырку в футболке дырявить под орден.
...
Рейтинг: 0 / 0
Вычисление с датой
    #39544655
Select top 1 Итог FROM tbl where Дата < t.Дата order by Дата Desc
Спасибо! Выдаёт нужный "Итог" предыдущей даты, но опять же, если дата 15.08.2017 присутствует, то везде выдаёт 0 (Null?).

Объясню подробнее.
Сейчас у меня стоит триггер, обновляющий поле Итог
UPDATE tbl SET Итог = (SELECT (Sum(1) + Sum(2) - Sum(3)) FROM tbl Where Дата <= tbl.Дата)
Он работает, но очень долго. Хочу избавиться от sum и пересчитывать только последние дни исходя из "Итога" предыдущего , но не могу добавить именно его.

UPDATE tbl SET Итог = (SELECT (1 + 2 - 3 + (Select top 1 Итог FROM tbl where Дата < tbl.Дата order by Дата Desc)) FROM tbl Where Дата = tbl.Дата)
Если ввести любую конкретную Дату вместо (...< tbl.Дата...), то считает на ура....кроме 15.08.2017 (#08/15/2017#) !!!
Это ведь первый день в таблице, до него всё Null !?
Отсюда вопрос, как поставить ограничение на Null в моём случае?
...
Рейтинг: 0 / 0
Вычисление с датой
    #39544707
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Литвинюк Антон,
а зачем хранить "итог"-ведь это вычисляемое значение и ему не место в таблице
...
Рейтинг: 0 / 0
Вычисление с датой
    #39545113
Мне итог нужно хранить как минимум для статистики )

Получилось заставить правильно обновлять для текущего дня, что имеет свои неудобства.
Код: plsql
1.
Select top 1 Итог FROM tbl where Дата < "текущая дата" order by Дата Desc


А если оставить where Дата < tbl.Дата то
тут хоть > ставь, хоть < , всё будет NUll, потому что даты ограничены. Я правильно понял?
Пытался дописать and Дата > #08/15/2017# всё-равно не помогает.
Есть ли вообще способ запустить это дело?
...
Рейтинг: 0 / 0
Вычисление с датой
    #39545176
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Литвинюк Антон
Код: vbnet
1.
2.
Select top 1 Итог FROM tbl where Дата < "текущая дата" order by Дата Desc
Select top 1 Итог FROM tdl where Дата < format(датаНаКоторуюВычисляете,"mm\/dd\/yy") order by Дата Desc


найдите отличия и прочтите про использование дат
...
Рейтинг: 0 / 0
Вычисление с датой
    #39545259
Что именно я должен понять из FAQ ?
Если вы про написание "Текущая дата" - так это моя отсебятина. В моей БД рабочее название <CurrentDate>

"датаНаКоторуюВычисляете" это и есть "Дата", т.е. where Дата < t.Дата как бы правильно, но даёт 0...Format вроде тут ни к чему.
...
Рейтинг: 0 / 0
Вычисление с датой
    #39545304
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Литвинюк АнтонЧто именно я должен понять из FAQ ?
....Microsoft JET SQL оперирует датами в американском формате, т.е. именно в вышеуказанном виде Месяц/День/Год.
Код: vbnet
1.
2.
3.
4.
?date
31.10.2017 
?format(date,"mm\/dd\/yy")
10/31/17
...
Рейтинг: 0 / 0
Вычисление с датой
    #39545381
Про американский формат я понял. Но ведь я сравниваю дату саму с самой ( where Дата < tbl.Дата ), формат у них одинаковый, разве нет?
where Дата < format(Дата, #mm/dd/yyyy#) - не катит
...
Рейтинг: 0 / 0
Вычисление с датой
    #39545506
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Литвинюк Антон,
1.Зря Вы не принимаете этот совет 20913059 (набьёте достаточное количество шишек согласитесь)
2.А какое значение Вы хотите увидеть для даты которой нет в таблице? (null-ничего другого быть не может-разве что отобразить 0)
3.И не обзывайте поля цифрой
Код: vbnet
1.
2.
3.
SELECT Таблица1.дата, Таблица1.ctl1, Таблица1.ctl2, Таблица1.ctl3, [ctl1]+[ctl2]-[ctl3] AS поСтроке, [ctl1]+[ctl2]-[ctl3]+
(select top 1 ctl1+ctl2-ctl3 from таблица1 as t1 where t1.дата<таблица1.дата  order by дата desc) AS [+предыд]
FROM Таблица1;
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вычисление с датой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]