- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:グループ化された中での複雑な処理)
グループ化された中での複雑な処理
このQ&Aのポイント
- データベーステーブルに格納された処理データを処理名ごとに集計する方法を教えてください。
- 処理状況が「完了」の場合は「完了」、処理状況が「未処理」の場合は「未処理」、処理状況に「実行中」が含まれる場合は「実行中」として抽出したいです。
- SQL文一発での抽出は難しいでしょうか?データベースはORACLEを使用しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
次のSQLで良いと思います。 select 処理名, decode(全体数,完了数,'001',未処理数,'000',decode(sign(実行中数),1,'003','002')) as 処理状況コード, decode(全体数,完了数,'完了',未処理数,'未処理',decode(sign(実行中数),1,'実行中','中断')) as 処理状況名 from ( select 処理名, count(*) as 全体数, sum(decode(処理状況コード,'001',1,0)) as 完了数, sum(decode(処理状況コード,'000',1,0)) as 未処理数, sum(decode(処理状況コード,'002',1,0)) as 中断数, sum(decode(処理状況コード,'003',1,0)) as 実行中数 decode( from テーブル group by 処理名 )
お礼
decode関数で状況ごとのカウント数をとってそれを比較対照とすればこんなことが出来るんですね! 大変、勉強になりました。ありがとうございます!