Текущее время: Пт, июл 25 2025, 18:31

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Как выполнить один SELECT вместо двух ...
СообщениеДобавлено: Ср, окт 03 2007, 13:02 
Ассистент
Ассистент

Зарегистрирован:
Пн, май 29 2006, 11:05
Сообщения: 30
Доброго дня, уважаемые!

Подскажите мне, что можно сделать в таком случае:

Есть программа на АВАР которая выводит некий отчет. В коде программы есть 2 селекта с SUM которые суммируют объемы по конкретному продукту, причем один селект суммирует объемы относящиеся к выделенному объему, а другой селект суммирует объемы отказов.
Селекты идентичны и отличаются только критерием типа докумета (допобъем или отказ)

Т.е. баланс по продукту будет разностьмежду результатами этих двух селектов.

select sum(quan) into q1 from tbl where prod=... and typdoc='q'
select sum(quan) into q2 from tbl where prod=... and typdoc='w'
balans = q1 - q2

Можно ли, чтонибудь сделать, чтобы рассчитать баланс за один селект?

PS:
SAP на ORACLE, а у него есть такаю штука как DECODE в SELECT, хотя это не поможет

Спасибо.


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

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
а GROUP BY в этом случае не поможет ?

Еще, как вариант, выбирать по обеим typdoc сразу во внутреннюю таблицу, ограничившись 2-мя полями. И потом сколлектить по typdoc.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


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

Зарегистрирован:
Чт, апр 07 2005, 05:27
Сообщения: 621
Откуда: Москва
Пол: Мужской
Я бы тоже выбрал два поля и вычел. Хотя, если хочется извратиться, можно сделать NATIVE SQL. При этом становится доступным весь оракловский синтаксис, если очень хочется, то можно и хранимые процедуры вызвать.


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

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Code:
DATA: BEGIN OF it OCCURS 2,
      wrbtr LIKE bsik-wrbtr,
      bukrs LIKE bsik-bukrs,
      END OF it.
DATA: sum LIKE bsik-wrbtr.

SELECT SUM( wrbtr ) bukrs FROM bsik
INTO TABLE it
WHERE bukrs IN ('1000', '2000')
GROUP BY bukrs.

READ TABLE it WITH KEY bukrs = '1000'.
IF sy-subrc IS INITIAL.
  sum = it-wrbtr.
ENDIF.

READ TABLE it WITH KEY bukrs = '2000'.
IF sy-subrc IS INITIAL.
  sum = sum + it-wrbtr.
ENDIF.

WRITE: / sum.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, окт 03 2007, 14:24 
Ассистент
Ассистент

Зарегистрирован:
Пн, май 29 2006, 11:05
Сообщения: 30
Всем большое спасибо. Действительно GROUP BY у меня из головы вылетел :)


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

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


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

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


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

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