1

すべてのレコードを取得するクエリがあります。ここで、すべてのレコードのうち、これらの 3 つの条件の間にいくつのレコードがあるかを確認したいと思います

  1. 250,000 以下
  2. 250,000 ~ 500,000
  3. 50万以上

合計6列を取得しています。列Credit Dist dt - App Received dti getworking days1を減算することによって、 LO Issued - appr_deci get を減算することによってworking days2。どのレコードがどの条件にあるかを判断した後、これらの条件ごとにすべてのアプリケーションをカウントし、アプリケーションの数を と で割る必要がworking day1ありworking day2ます。どのアプリケーションがどの状態にあるかを判断し、さらに先に進むにはどうすればよいですか?

クエリは非常に長いので、アイデアを与えるためにダミーのクエリを入れようとします。

select LOSA_APP.app_ref_no AS "App.Ref.No.",
       LOSA_EXP_SUMM_Z.group_exp AS "Group Exposure Amount",
       column AS "App Received dt",
       column AS "Credit Dist dt",
       column AS "appr_dec",
       column AS "LO Issued" 
from 
    losa_app LOSA_APP
INNER JOIN
    code_branch CODE_BRANCH
ON
    LOSA_APP.attend_branch = CODE_BRANCH.branch_id
.... -- more joins
where
    LOSA_APP.app_status in ('A','R')
and
    .....  --other conditions

条件については、のLOSA_EXP_SUMM_Z.group_expようLOSA_EXP_SUMM_Z.group_exp <= 250,000にチェックする必要がありますLOSA_EXP_SUMM_Z.group_exp between 250,000 and 500,000LOSA_EXP_SUMM_Z.group_exp >= 500,000

ありがとう

4

1 に答える 1

0

おそらく、その列/条件によって出力を分割する必要があります。たとえば、グループ 1 - 250,000 以下、グループ 2...、グループ 3... その後、グループ内で並べ替えることができます。RANK やその他の分析関数を使用してみてください。

Select * From ( Select empno, deptno, sal , RANK() OVER (PARTITION BY deptno Order by sal) rnk From scott.emp ) /

于 2012-12-05T14:27:04.603 に答える