Текущее время: Вт, июл 22 2025, 18:33

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: EXEC SQL и нахождение максимального
СообщениеДобавлено: Пн, ноя 01 2010, 14:40 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Добрый день.

Написал запрос EXEC SQL, приконнектился к внешней БД.
Хотелось бы найти максимально значение по дате из таблички (SELECT MAX), которая имеет формат '02-JAN-00' (Day, Month, Year),
а также конвертнуть дату в формат даты САПА. Пример кода:
Code:
TYPES: BEGIN OF fs_out,
                id_class(10),
                id_to(10),
                id_date(10),
                price(22),
           END OF fs_out.
DATA: ft_out TYPE TABLE OF fs_out WITH HEADER LINE.
EXEC SQL PERFORMING append_data.
        SELECT id_class,
                    id_to,
                    MAX(id_date),
                    price
          INTO :ft_out
          FROM mytable
          WHERE price NOT IN (1, 0)
ENDEXEC.

Группировка должна быть по двум первым полям.
До этого тестил поменяв формат id_date на тип N и группировал по id_class id_to price. Если убрать из группировки price, DUMP.
Посоветуйте плиз как можно решить эту задачу. Конечно можно сперва выкинуть во внут. табличку, а потом находить MAX + CONVERT, как-то не очень оптимально получается.
Спасибо заранее.

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: EXEC SQL и нахождение максимального
СообщениеДобавлено: Пн, ноя 01 2010, 14:53 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
По группировке - а что вы хотели? В GROUP BY необходимо перечислять все поля, не вошедшие в агрегаты.
По поводу конвертации - СУБД неплохо бы указать... ;)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: EXEC SQL и нахождение максимального
СообщениеДобавлено: Пн, ноя 01 2010, 15:03 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Цитата:
По группировке - а что вы хотели? В GROUP BY необходимо перечислять все поля, не вошедшие в агрегаты.

Да я знаю это, вот и спрашиваю совета... Просто с точки зрения производительности перебирать в лупе и находить максимум не есть хорошо, я так понимаю )
Цитата:
По поводу конвертации - СУБД неплохо бы указать... ;)

ORACLE

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: EXEC SQL и нахождение максимального
СообщениеДобавлено: Пн, ноя 01 2010, 23:18 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июн 02 2009, 22:28
Сообщения: 228
Откуда: MOW
Пол: Мужской
А что-нибудь в этом роде?
Code:
SELECT id_class, id_to, MAX(to_char(to_date(id_date),'YYYYMMDD')), min(price) as price
INTO :ft_out
FROM mytable
WHERE price NOT IN (1,0)
GROUP BY id_class, id_to


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: EXEC SQL и нахождение максимального
СообщениеДобавлено: Вт, ноя 02 2010, 07:19 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Все хорошо. Дату конвертирует и находит максимум, но вот с суммами проблема. Запрос всегда находит минимальное по группировке, в данном случае это поля id_class, id_to... Было бы не плохо если из найденной максимальной даты (группировка по id_class, id_to) вытаскивал соответствующую строке сумму (price)

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: EXEC SQL и нахождение максимального
СообщениеДобавлено: Вт, ноя 02 2010, 08:48 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
FeBO-Sh написал:
Все хорошо. Дату конвертирует и находит максимум, но вот с суммами проблема. Запрос всегда находит минимальное по группировке, в данном случае это поля id_class, id_to... Было бы не плохо если из найденной максимальной даты (группировка по id_class, id_to) вытаскивал соответствующую строке сумму (price)

Напоминает какую то студенческую задачку по SQL.
Посмотрите синтаксис подзапросов. И на SQL-ных форумах полно готовых решений

_________________
"После" - не значит "вследствие"


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: EXEC SQL и нахождение максимального
СообщениеДобавлено: Вт, ноя 02 2010, 09:07 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
)) можно и так назвать...
Ладно всем спасибо за участие. Попробую сам разобраться...

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: EXEC SQL и нахождение максимального  Тема решена
СообщениеДобавлено: Вт, ноя 02 2010, 10:21 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июн 02 2009, 22:28
Сообщения: 228
Откуда: MOW
Пол: Мужской
Я просто не понял задачу сразу ))
Один из вариантов думаю такой:
Code:
SELECT t1.id_class, t1.id_to, MAX(to_char(to_date(t1.id_date),'YYYYMMDD')),
(select min(t2.price) from mytable t2
   where t2.id_class = t1.id_class
       and t2.id_to = t1.id_to
       and t2.id_date = t1.id_date ) as price
INTO :ft_out
FROM mytable t1
WHERE t1.price NOT IN (1,0)
GROUP BY t1.id_class, t1.id_to


На каком-нибудь древнем оракле может и не сработать.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: EXEC SQL и нахождение максимального
СообщениеДобавлено: Вт, ноя 02 2010, 11:59 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Спасибо...

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


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

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


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

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


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

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