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

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


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

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


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

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