Текущее время: Чт, июл 24 2025, 06:06

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


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

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


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

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