powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите, плиз, с запросом
3 сообщений из 3, страница 1 из 1
Подскажите, плиз, с запросом
    #32092557
Speaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется запрос следующего вида:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    select 'payment' as doc_name,
           ..... 
           pt.pt_id as paym_type,
            1 . 0 *pm.paym_summ as doc_rsumm,
            1 . 0 *pm.paym_summ as doc_dsumm,
           ....
    from payment pm, paymtype pt
    where (pt.pt_id=pm.pt_id) and (...) and (pt.pt_io='I')
   
    union all
    
    select 'payment' as doc_name,
           ..... 
           pt.pt_id as paym_type,
           - 1 . 0 *pm.paym_summ as doc_rsumm,
           - 1 . 0 *pm.paym_summ as doc_dsumm,
           ....
    from payment pm, paymtype pt
    where (pt.pt_id=pm.pt_id) and (...) and (pt.pt_io='O')

Это список платежей клиента для получения балансового отчета,
можно ли как-нибудь извратиться, чтобы вышеприведенное записать
одним выраженим, то есть в зависимости от 'I' или 'O' получить 1 или -1
в выбираемом поле? Типов платежей дохрена и не хочется для каждого
делать двойной запрос. Есть идея сделать таблицу с двумя полями I и O
и соответственно значениями 1 и -1, была также идея выбирать просто
I или O а уже на клиенте сортировать самому, но запрос будет использоваться
в нескольких местах, поэтому тоже не хочется делать двойную работу.
Может кто-нибудь предложит лучшую идею?
...
Рейтинг: 0 / 0
Подскажите, плиз, с запросом
    #32092593
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты про это?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 'payment' as doc_name,
       ..... 
       pt.pt_id as paym_type,
       decode(pt.pt_io, 'I',  1 . 0 , 'O', - 1 ) * pm.paym_summ as doc_rsumm,
       ....
from payment pm, paymtype pt
where pt.pt_id=pm.pt_id
      ...
      and pt.pt_io in ('I', 'O')

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 'payment' as doc_name,
       ..... 
       pt.pt_id as paym_type,
       case pt.pt_io when 'I' then  1  else - 1  end * pm.paym_summ as doc_rsumm,
       ....
from payment pm, paymtype pt
where pt.pt_id=pm.pt_id
      ...
      and pt.pt_io in ('I', 'O')
...
Рейтинг: 0 / 0
Подскажите, плиз, с запросом
    #32092617
Speaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, именно это :), спасибо
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите, плиз, с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]