Текущее время: Ср, июл 30 2025, 19:18

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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