Текущее время: Сб, авг 02 2025, 01:30

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Помогите написать SELECT с датами
СообщениеДобавлено: Пн, окт 08 2007, 09:26 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, май 10 2007, 12:13
Сообщения: 52
Нужно сделать SELECT таблицы с полями i - NUMBER, validfrom -dats,validto -dats, чтобы разница дат была <= год
Что-то вроде :
Select SUM ( i ) from table where ( validfrom- validto)< 365?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите написать SELECT с датами
СообщениеДобавлено: Пн, окт 08 2007, 09:55 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, июн 13 2007, 16:36
Сообщения: 585
Откуда: Belarus
Пол: Мужской
mpol написал(а):
Нужно сделать SELECT таблицы с полями i - NUMBER, validfrom -dats,validto -dats, чтобы разница дат была <= год
Что-то вроде :
Select SUM ( i ) from table where ( validfrom- validto)< 365?

А какая из дат известна ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 08 2007, 10:01 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Если неизвестны обе даты, то только Native SQL или два параллельных курсора. Ну или вытащить все и LOOP по внутренней таблице.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 08 2007, 10:05 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, май 10 2007, 12:13
Сообщения: 52
и VALIDFROM и VALIDTO известно.Для примера:
7 01.01.2003 01.02.2003
18 01.01.2003 01.02.2005
Sum должно вернуть 7, т.к. 01.02.2005 - 01.01.2003> 1 года. Есть какая-то функция, которую можно использовать в условии?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 08 2007, 10:10 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
mpol написал(а):
и VALIDFROM и VALIDTO известно.Для примера:
7 01.01.2003 01.02.2003
18 01.01.2003 01.02.2005
Sum должно вернуть 7, т.к. 01.02.2005 - 01.01.2003> 1 года. Есть какая-то функция, которую можно использовать в условии?

Если пара VALIDFROM VALIDTO в таблице, из кторой идет выборка, уникальна, то сначала убить все пары дат, которые не удовлетворяют условию, а потом выполнить SELECT ... FOR ALL ENTRIES ...
Если пара не уникальна - только курсор. Но уже один.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 08 2007, 12:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Если таблица своя z-ская, то можно добавить столбец с разницей дат.
В стандарте хранятся же строки в верхнем регистре для поиска. Чем мы хуже?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 11 2007, 12:42 
Специалист
Специалист

Зарегистрирован:
Чт, июн 23 2005, 18:05
Сообщения: 119
Вообще именно для такой цели и предназначен CONTEXT.
см. SE33.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 11 2007, 13:06 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
kizif написал(а):
Вообще именно для такой цели и предназначен CONTEXT.
см. SE33.

Кажется это относиться уже к "Устаревшие методы и концепции".


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 11 2007, 13:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Да, устаревшая технология. Но дело в том, что контексты нужны для того, чтобы кэшировать очень сложные вычисления. К данному топику это абсолютно никакого отношения не имеет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 11 2007, 21:29 
Начинающий
Начинающий

Зарегистрирован:
Пн, окт 01 2007, 10:17
Сообщения: 11
Задача напоминает выбор кредитных договоров со сроком погашения до года. Обычно в такой таблице или связанных присутствует тип договора по сроками в 1 мес, 3 мес, 6 мес, .... Возможно у Вас похожая ситуация.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 12 2007, 13:02 
Специалист
Специалист

Зарегистрирован:
Чт, июн 23 2005, 18:05
Сообщения: 119
sibrin написал:
Да, устаревшая технология. Но дело в том, что контексты нужны для того, чтобы кэшировать очень сложные вычисления. К данному топику это абсолютно никакого отношения не имеет.

Да устаревшая. Но почему интересно? Что сейчас взамен.
Разве разность в датах это не вычисление?
Если в Oracle например можно создать вьюху например из суммы полей или объединения полей и обращаться к ней, то ракурсы этого не позволяют.
Мне казалось для этого предназначен контекст.
В вопросе ставилась задача сделать вычисление на стороне БД.Буфер это не совсем сторона БД. Но все же.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 12 2007, 14:04 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
kizif написал(а):
В вопросе ставилась задача сделать вычисление на стороне БД.

Вообще-то задача ставилась такая: выбрать сумму для всех записей с разницей между конечной и начальной датой = констаната :)
Про то, где должно выполняться подобное вычисление, условий никаких не было :wink:

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 12 2007, 14:13 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
kizif написал(а):
Да устаревшая. Но почему интересно? Что сейчас взамен.

Взамен сейчас Shared Objects Area.
В контекстах есть своя прелесть, конечно.
Филд-экзиты тоже устаревшие, но какую мощь дают абап-разработчику! :))
Или, например, табличные параметры в ф.м. Они хоть и устарели, но RFC без них не работает.

kizif написал(а):
Разве разность в датах это не вычисление?

Это слишком простое вычисление. Всё равно все записи из базы тащить придётся.

kizif написал(а):
В вопросе ставилась задача сделать вычисление на стороне БД.Буфер это не совсем сторона БД. Но все же.

Вопрос, как всегда, в экономии времени.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 12 2007, 14:16 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Удав написал(а):
Вообще-то задача ставилась такая: выбрать сумму для всех записей с разницей между конечной и начальной датой = констаната :)

Не константа, а "чтобы разница дат была <= год".
Впрочем, это сути не меняет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, окт 13 2007, 02:47 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Суть в том, что OpenSQL'ю крайне не хватает аналитических функций. И хватать не будет. Ибо кросплатформенный :(


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB