2017-04-03 7 views
0

"作業要求"が完了していないアカウントの一覧を取得するクエリが出てきています。SQL:完了していない「作業要求」を持つアカウントのリストを取得する

以下のクエリでは、「仕事の依頼」が「受信済み」と「完了」のアカウントがすべて取得されますが、完了した時間がもうけられたアカウントのみが必要です。

SELECT n.incident_no, 
    e.event_sub_type, 
    COUNT (*) qty 
FROM tb_event e, 
tb_incident n, 
vius_def d 
WHERE e.incident_id = n.incident_id 
AND n.incident_id = d.incident_id 
AND EXISTS 
(SELECT 0 
FROM TB_EVENT e 
WHERE e.event_type = 'wrk req' 
    AND e.event_sub_type = 'received' 
    AND e.incident_id = n.incident_id) 
AND EXISTS 
(SELECT 0 
FROM TB_EVENT e 
WHERE e.event_type = 'wrk req' 
    AND e.event_sub_type IN ('received', 
          'completed') 
    AND e.incident_id = n.incident_id) 
AND e.event_type = 'wrk req' 
AND d.incident_status_pd='o' 
GROUP BY n.incident_no, 
    e.event_sub_type 
ORDER BY n.incident_no 

これが完成よりも、私は唯一これは私が答えとして希望するものである

回以上受けているものにしたい

------------------------------------ 
incident_no event_sub_type qty 
------------------------------------ 
2008099999 COMPLETED 2 
2008099999 RECEIVED 1 
2013123456 RECEIVED 1 
2014141414 COMPLETED 1 
2014141414 RECEIVED 2 
2016111111 RECEIVED 1 

上記のクエリに現在の答えです上記のクエリ

------------------------------------ 
incident_no event_sub_type qty 
------------------------------------ 
2013123456 RECEIVED 1 
2014141414 RECEIVED 2 
2016111111 RECEIVED 1 

答えて

1

古いスタイルの結合を使用する別のケースだと思います実際に何が起こっているのか分かりにくいです。ここではサブクエリは機能的に同じですが、EXISTSを使用することなく、はるかに単純です。それをサブクエリとして使用して合計を比較するのは簡単です。

SELECT incident_no, 'RECEIVED' as event_sub_type, R_COUNT as qty 
    FROM 
    (
    SELECT n.incident_no, 
      e.event_sub_type, 
      SUM(CASE WHEN lower(e.event_sub_type) = 'recieved' THEN 1 ELSE 0 END) AS R_COUNT, 
      SUM(CASE WHEN lower(e.event_sub_type) = 'completed' THEN 1 ELSE 0 END) AS C_COUNT 
    FROM tb_event e 
    JOIN tb_incident n ON e.incident_id = n.incident_id AND lower(e.event_sub_type) IN ('received', 'completed') 
    JOIN vius_def d ON n.incident_id = d.incident_id 
    WHERE e.event_type = 'wrk req' AND d.incident_status_pd='o' 
    GROUP BY n.incident_no 
) X 
    WHERE R_COUNT > C_COUNT 
+0

ありがとうございました! Web上のビデオやチュートリアルを通じて自分自身で考えているので、おそらくSQLでコーディングする正しい方法を知らないので、私が得ることができる助けに感謝します。私はちょうど混乱している。私はあなたの質問をテストし、それがどのように動作するかを教えます。 もう一度お疲れ様でした。 – Romeo

+0

@Romeo - ありがとう - 私はすでにそれが動作することを知っています。 – Hogan

関連する問題