在查询结果中使用sql变量

时间:2018-08-24 11:08:32

标签: sql oracle

我有以下一些代码:

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一样。 但是,我知道这行不通。因此,对于100个值来说,就像是“ 367”,对于其他100个值来说,就像是“ 356”。 有人可以帮助我如何将条件值放入结果中吗?

喜欢:

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

1 个答案:

答案 0 :(得分:0)

您可以尝试将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_postru_acct左联接):