私はウェブ上を見てきましたが、私の問題の答えを見つけられませんでした。私が見つけた最も近いのはStackOverflowのthisでした。グループと統計情報をまとめて照会する
私は、ステータスが異なるトランザクションを持っています。私はすべてのトランザクションをそのステータスに従って要約するクエリをコンパイルしようとしています。私はGroup Byで簡単にそれを行うことができますが、私が必要とすることはできません。特定のステータスの2つを合計することです。例:
Status
--------
Status_A
Status_B
Status_C_D
Status_C
Status_D
Status_E
上記のStatus_C_Dは、Status_CとStatus_Dの合計になります。ステータスCはトランザクションエラーの一種であり、Status_Dは別の種類のエラーであるため、両方の合計でエラーのあるトランザクションの合計を簡単に確認できます(すべてがレポートに表示されます)。私が持っているものはこれです:
SELECT DECODE(STATUS_CD,
0, 'Status_A',
1, 'Status_B',
2, 'Status_C',
3, 'Status_D',
4, 'Status_E',
'Unknown') status
FROM table_a ...
うまくいけば十分な文脈です。どんな助けでも大歓迎です。 :)
select decode(TABLE_A.status_cd, 0, 'Status A',
1, 'Status B',
2, 'Status C',
3, 'Status D',
4, 'Status E',
'Unknown') status,
SUM(decode(trunc(((sysdate - TABLE_A.date_time) +8)/8), 1, 1, 0)) "0-7",
SUM(decode(trunc(((sysdate - TABLE_A.date_time) +8)/8), 2, 1, 0)) "8-15",
SUM(decode(trunc(((sysdate - TABLE_A.date_time) +8)/8), 3, 1, 0)) "16-23",
SUM(decode(trunc(((sysdate - TABLE_A.date_time) +9)/8), 4, 1, 0)) "24-30",
SUM(decode(trunc(((sysdate - TABLE_A.date_time) -1)/30), 1, 1, 0)) "31-60",
SUM(decode(trunc(((sysdate - TABLE_A.date_time) -1)/30), 2, 1, 0)) "61-90",
SUM(decode(trunc(((sysdate - TABLE_A.date_time) -1)/30), 3, 1, 0)) "91-120",
SUM(decode(trunc(((sysdate - TABLE_A.date_time) -1)/60), 2, 1, 0)) "121-180",
SUM(decode(trunc(((sysdate - TABLE_A.date_time))/181), 0, 0, 1)) ">180"
FROM Table_A
WHERE ...
GROUP BY TABLE_A.status_cd
Oracle 11gのネイティブPIVOT演算子をサポートしています。 –
私たちは10gを使用しています。私が知っている限り、もう数年は切り替えることはありません。ありがとう。 –