2017-02-28 6 views
1

テーブルの回数(RECNAME)が特定の期間にわたってユーザーによってクエリで使用されたPeoplesoftのSQLを作成しようとしています。テーブル全体に掛け算Peoplesoft/Oracle SQL

PSQRYRECORDから私はQRYNAME & EXECCOUNT(QRYNAMEのみ1 EXECCOUNTを持っている)、OPRID & LASTEXECDTTMによるフィルタリングを取得することができますPSQRYSTATSからQRYNAME & RECNAME(QRYNAMEが複数RECNAMEを持つことができます)

を取得することができます。

しかし、これは私が高すぎる金額を与えている:

select A.RECNAME, Sum(B.EXECCOUNT) from FMSADM.PSQRYRECORD A, FMSADM.PSQRYSTATS B 
WHERE A.QRYNAME = B.QRYNAME 
AND A.OPRID = 'JDOE' 
AND B.LASTEXECDTTM BETWEEN to_date('01-JAN-16 00:00:00','DD-Mon-YY HH24:MI:SS') AND to_date('27-FEB-17 23:50:00','DD-Mon-YY HH24:MI:SS') 
GROUP BY A.RECNAME 
ORDER BY Sum(B.EXECCOUNT) DESC 

私はEXECCOUNT掛けるが、それは仕事を得ることができない、その後RECNAMEをカウントする必要があると思います。

ありがとうございます!

答えて

1

問題は、PSQRYRECORDが複数の行で同じOPRID、QRYNAME、RECNAMEの組み合わせを持つ可能性があることです。それが実行されると、execcountにそのクエリが乗算されます。別のOPRID、QRYNAME、RECNAMEをPSQRYRECORDから取得し、PSQRYSTATSに追加する必要があります。

WITH QRYREC AS (
    SELECT OPRID, QRYNAME, RECNAME 
    FROM PSQRYRECORD 
    GROUP BY OPRID, QRYNAME, RECNAME 
) 
SELECT QRYREC.RECNAME, SUM(QS.EXECCOUNT) 
FROM QRYREC 
JOIN PSQRYSTATS QS ON QS.QRYNAME = QRYREC.QRYNAME 
WHERE 
QRYREC.OPRID = 'JDOE' 
AND QS.LASTEXECDTTM BETWEEN to_date('01-JAN-16 00:00:00','DD-Mon-YY HH24:MI:SS') AND to_date('27-FEB-17 23:50:00','DD-Mon-YY HH24:MI:SS') 
GROUP BY QRYREC.RECNAME 
ORDER BY SUM(QS.EXECCOUNT) DESC 
関連する問題