Oracle EBS 应收账龄取数SQL

 取值来源与总账

SELECT decode(gcc.segment5, '0', gcc.segment6, gcc.segment5) cus_code,
       gcc.segment3,
       trunc(nvl(to_date(gjl.attribute4, 'RRRR/MM/DD HH24:MI:SS'),
                 gjh.default_effective_date)) act_date,
       trunc(to_date('2019-01-31 23:59:59', 'RRRR/MM/DD HH24:MI:SS')) -
       trunc(nvl(to_date(gjl.attribute4, 'RRRR/MM/DD HH24:MI:SS'),
                 gjh.default_effective_date)) + 1 days,
       SUM(decode(sign(to_date('2019-01-01 00:00:00',
                               'RRRR/MM/DD HH24:MI:SS') -
                       trunc(gjl.effective_date)),
                  1,
                  (nvl(gjl.entered_dr, 0) - nvl(gjl.entered_cr, 0)),
                  0)) year_begin,
       SUM(decode(sign(to_date('2019-01-01 00:00:00',
                               'RRRR/MM/DD HH24:MI:SS') -
                       trunc(gjl.effective_date)),
                  1,
                  (nvl(gjl.entered_dr, 0) - nvl(gjl.entered_cr, 0)),
                  0)) period_begin,
       
       SUM(CASE
             WHEN to_date('2019-01-01 00:00:00', 'RRRR/MM/DD HH24:MI:SS') <=
                  trunc(gjl.effective_date) AND
                  trunc(gjl.effective_date) <=
                  to_date('2019-01-31 23:59:59', 'RRRR/MM/DD HH24:MI:SS') THEN
              nvl(gjl.entered_dr, 0)
             ELSE
              0
           END) period_dr,
       
       SUM(CASE
             WHEN to_date('2019-01-01 00:00:00', 'RRRR/MM/DD HH24:MI:SS') <=
                  trunc(gjl.effective_date) AND
                  trunc(gjl.effective_date) <=
                  to_date('2019-01-31 23:59:59', 'RRRR/MM/DD HH24:MI:SS') THEN
              nvl(gjl.entered_cr, 0)
             ELSE
              0
           END) period_cr,
       
       SUM(decode(sign(to_date('2019-01-01 00:00:00',
                               'RRRR/MM/DD HH24:MI:SS') -
                       trunc(gjl.effective_date)),
                  1,
                  0,
                  (nvl(gjl.entered_dr, 0) - nvl(gjl.entered_cr, 0)))) period_net,
       SUM((nvl(gjl.entered_dr, 0) - nvl(gjl.entered_cr, 0))) amount
  FROM gl_je_headers gjh, gl_je_lines gjl, gl_code_combinations gcc
 WHERE gjh.ledger_id = 2021
   AND gjh.currency_code = 'CNY'
   AND gjh.je_header_id = gjl.je_header_id
   AND gjl.status = 'P'
   AND gcc.summary_flag <> 'Y'
   AND gjl.code_combination_id = gcc.code_combination_id
   AND trunc(nvl(to_date(gjl.attribute4, 'RRRR/MM/DD HH24:MI:SS'),
                 gjh.default_effective_date)) <=
       to_date('2019-01-31 23:59:59', 'RRRR/MM/DD HH24:MI:SS')
   AND gjh.default_effective_date <=
       to_date('2019-01-31 23:59:59', 'RRRR/MM/DD HH24:MI:SS')
   AND substr(gcc.segment3, 1, 4) = '1122'
 GROUP BY gcc.segment5,
          gcc.segment6,
          gcc.segment3,
          trunc(nvl(to_date(gjl.attribute4, 'RRRR/MM/DD HH24:MI:SS'),
                    gjh.default_effective_date))

  根据定义的模板取值

SELECT cus.*
  FROM (SELECT dt.cus_code, 
               dt.segment3,
               (SELECT ffv.description
                  FROM fnd_flex_values_vl ffv, fnd_flex_value_sets ffvs
                 WHERE ffv.flex_value_set_id = ffvs.flex_value_set_id
                   AND ffvs.flex_value_set_name = '%%_COA_ACC'
                   AND ffv.flex_value = dt.segment3) segment3_desc, 
               dt.cus_name,
               dt.days_start,
               dt.aging_bucket_line_id,
               dt.amount,
               SUM(dt.year_begin) over(PARTITION BY dt.cus_code, dt.segment3) year_begin_bal,
               SUM(dt.period_begin) over(PARTITION BY dt.cus_code, dt.segment3) period_begin_bal,
               SUM(dt.period_dr) over(PARTITION BY dt.cus_code, dt.segment3) period_dr,
               SUM(dt.period_cr) over(PARTITION BY dt.cus_code, dt.segment3) period_cr,
               SUM(dt.period_net) over(PARTITION BY dt.cus_code, dt.segment3) period_amount,
               SUM(dt.amount) over(PARTITION BY dt.cus_code, dt.segment3) sum_amount
          FROM (SELECT tnt.cus_code,
                       tnt.segment3,
                       afa_ar_book_age_pkg.get_company_name(tnt.cus_code) cus_name,
                       aabl.aging_bucket_line_id,
                       aabl.days_start,
                       SUM(tnt.year_begin) year_begin,
                       SUM(tnt.period_begin) period_begin,
                       SUM(tnt.period_dr) period_dr,
                       SUM(tnt.period_cr) period_cr,
                       SUM(tnt.period_net) period_net,
                       SUM(tnt.amount) amount
                  FROM (SELECT   decode(gcc.segment5, '0', gcc.segment6, gcc.segment5) cus_code,
                         gcc.segment3,
                         trunc(nvl(to_date(gjl.attribute4,
                                           'RRRR/MM/DD HH24:MI:SS'),
                                   gjh.default_effective_date)) act_date,
                         trunc(to_date('2019-01-31 23:59:59',
                                       'RRRR/MM/DD HH24:MI:SS')) -  
                         trunc(nvl(to_date(gjl.attribute4,
                                           'RRRR/MM/DD HH24:MI:SS'),
                                   gjh.default_effective_date)) + 1 days,
                         SUM(decode(sign(to_date('2019-01-01 00:00:00',
                                                 'RRRR/MM/DD HH24:MI:SS') -
                                         trunc(gjl.effective_date)),
                                    1,
                                    (nvl(gjl.entered_dr, 0) -
                                    nvl(gjl.entered_cr, 0)),
                                    0)) year_begin,
                         SUM(decode(sign(to_date('2019-01-01 00:00:00',
                                                 'RRRR/MM/DD HH24:MI:SS') -
                                         trunc(gjl.effective_date)),
                                    1,
                                    (nvl(gjl.entered_dr, 0) -
                                    nvl(gjl.entered_cr, 0)),
                                    0)) period_begin,
                         
                         SUM(CASE
                               WHEN to_date('2019-01-01 00:00:00',
                                            'RRRR/MM/DD HH24:MI:SS') <=
                                    trunc(gjl.effective_date) AND
                                    trunc(gjl.effective_date) <=
                                    to_date('2019-01-31 23:59:59',
                                            'RRRR/MM/DD HH24:MI:SS') THEN
                                nvl(gjl.entered_dr, 0)
                               ELSE
                                0
                             END) period_dr,
                         
                         SUM(CASE
                               WHEN to_date('2019-01-01 00:00:00',
                                            'RRRR/MM/DD HH24:MI:SS') <=
                                    trunc(gjl.effective_date) AND
                                    trunc(gjl.effective_date) <=
                                    to_date('2019-01-31 23:59:59',
                                            'RRRR/MM/DD HH24:MI:SS') THEN
                                nvl(gjl.entered_cr, 0)
                               ELSE
                                0
                             END) period_cr,
                         
                         SUM(decode(sign(to_date('2019-01-01 00:00:00',
                                                 'RRRR/MM/DD HH24:MI:SS') -
                                         trunc(gjl.effective_date)),
                                    1,
                                    0,
                                    (nvl(gjl.entered_dr, 0) -
                                    nvl(gjl.entered_cr, 0)))) period_net,
                         SUM((nvl(gjl.entered_dr, 0) - nvl(gjl.entered_cr, 0))) amount
                          FROM gl_je_headers        gjh,
                               gl_je_lines          gjl,
                               gl_code_combinations gcc
                         WHERE gjh.ledger_id = 2021
                           AND gjh.currency_code = 'CNY'
                           AND gjh.je_header_id = gjl.je_header_id
                           AND gjl.status = 'P'
                           AND gcc.summary_flag <> 'Y'
                           AND gjl.code_combination_id =
                               gcc.code_combination_id
                           AND trunc(nvl(to_date(gjl.attribute4,
                                                 'RRRR/MM/DD HH24:MI:SS'),
                                         gjh.default_effective_date)) <=
                               to_date('2019-01-31 23:59:59',
                                       'RRRR/MM/DD HH24:MI:SS')
                           AND gjh.default_effective_date <=
                               to_date('2019-01-31 23:59:59',
                                       'RRRR/MM/DD HH24:MI:SS') 
                           AND substr(gcc.segment3, 1, 4) = '1122'
                        
                         GROUP BY gcc.segment5,
                                  gcc.segment6,
                                  gcc.segment3,
                                  trunc(nvl(to_date(gjl.attribute4,
                                                    'RRRR/MM/DD HH24:MI:SS'),
                                            gjh.default_effective_date))) tnt,
                       ar_aging_bucket_lines_b aabl
                 WHERE tnt.days BETWEEN aabl.days_start AND aabl.days_to
                   AND aabl.aging_bucket_id = 1
                   AND (aabl.type <> 'CURRENT')
                 GROUP BY tnt.cus_code,
                          tnt.segment3,
                          aabl.aging_bucket_line_id,
                          aabl.days_start) dt) cus
 WHERE (cus.year_begin_bal != 0 OR cus.period_begin_bal != 0 OR
       cus.period_amount != 0 OR cus.sum_amount != 0)
 ORDER BY segment3, cus_code, days_start;

 

你可能感兴趣的:(AR)