Используйте переменные sql в результатах запроса - PullRequest
0 голосов
/ 24 августа 2018

У меня есть некоторые из следующего кода:

Select p.CLIENT_NO,
       s.CLIENT_NAME,
       s.CLIENT_TYPE,
       p.GL_CODE,
       p.BATCH_KEY
  From RU_POST        p,
       RU_ACCT        a,
       Ru_Ru          s
 Where 
   a.INTERNAL_KEY(+) = p.INTERNAL_KEY
   And p.Batch_Key in
   (Select Distinct (p1.BATCH_KEY)
          From RU_POST p1
         Where Abs(p1.AMOUNT) <> 0
           And p1.POST_DATE Between To_Date('01-01-2015', 'dd-mm-yyyy') And
               To_Date('01-01-2015', 'dd-mm-yyyy')
           And p1.INTERNAL_KEY In ('367', '356'))

Теперь я хочу, чтобы значения, указанные в p1.INTERNAL_KEY, отображались в результатах запроса, как если бы я делал SELECT p1.INTERNAL_KEY. Однако я понимаю, что это не сработает. Таким образом, это будет похоже на «367» для 100 значений, «356» для других 100. Может ли кто-нибудь помочь мне, как поместить это значение условия в мой результат?

Вот так:

CLIENT_NO   CLIENT_SHORT    CLIENT_NAME GL_CODE INTERNAL_KEY
399999000   399999  A   4568    367
599999000   599999  B   4879    356

1 Ответ

0 голосов
/ 24 августа 2018

Вы можете попробовать изменить подзапрос in на объединение, например:

select distinct
       p.client_no
     , s.client_name
     , s.client_type
     , p.gl_code
     , p1.internal_key
from   ru_post p
       join ru_post p1 on p1.batch_key = p.batch_key
       left join ru_acct a on a.internal_key = p.internal_key
       cross join ru_ru s
where  abs(p1.amount) <> 0
and    p1.post_date between date '2015-01-01' and date '2015-01-01'
and    p1.internal_key in ('367', '356') );

(отредактировано для соответствия обновленному вопросу - теперь осталось объединение ru_post на ru_acct):

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...