2012-03-05 5 views
1

このクエリがあり、出力をインデントして最後の列から合計を取得したいと考えています。 は、今ではクエリの出力を飾る

person           |year|dossiers 
------------------------------------------------|----|-------- 
9210124           |1110|  166 
9210124           |1111|  198 
9210124           |1112|  162 
9210161           |1110|  183 
9210161           |1111|  210 
9210161           |1112|  142 

を与えると私は

person           |year|dossiers 
------------------------------------------------|----|-------- 
9210124           |1110|  166 
               |1111|  198 
               |1112|  162 
9210161           |1110|  183 
               |1111|  210 
               |1112|  142 
total              1061 

を持っていると思います。ここクエリ

select 
pers_nr "person", 
to_char(import_dt,'YYMM') "year and month", 
count(pers_nr) "dossiers" 
from 
    rdms_3codon 
where 
trunc(import_dt) >= trunc(trunc(sysdate, 'Q') -1, 'Q') 
and trunc(import_dt) < trunc(sysdate, 'Q')-1/(24*60*60) 
group by 
pers_nr, 
to_char(import_dt,'YYMM') 
order by 
pers_nr 

は、誰かが私を助けてくださいもらえますか?

+1

データプレゼンテーションはクエリ結果の一部であってはなりません。あなたのプログラミング言語でレイアウトを作ってください! –

+1

計算サブ(合計)、ピボットテーブル、非表示値は、レポートツールで簡単に処理できるすべてのタスクです。合計を計算し、UNION ALLを使用して結果セットにマージすることができますが、これらのタスクを簡単にするためのレポートツールが作成されますが、SQLでは実行しないでください。 – Wim

+0

私は通常、データの書式設定やレイアウトのスタイル設定にdbエンジンを使用しません。 SQL Serverでは、「COMPUTE」句を使用すると、クエリの一番下に集計関数を追加できます.Oralceにもこのような節があります。データを簡単にフォーマットするには、読みやすいレポートを作成するためにspreadshhetを使用することができます。あなたのデータに関して、私は行ヘッダーとして "person"をピボットテーブルとして使用し、列ヘッダーとして年を、データとして文書を使用します。 –

答えて

6

コメントに記載されているとおり、これはデータベース機能ではなくクライアント機能です。あなたはSQL * Plusを使用している場合たとえば、あなたが使用することができます。

break on person 
break on report 
compute sum label total of dossiers on report 

最初の行が重複した人物値を抑制し、 2番目と3番目は一緒に底に合計を生成します。 SQL * Plus出力書式設定などについては、hereと記載されています。

0

これを試してください。それは少なくとも、あなたの合計を与えるが、どの...

select 
pers_nr "person", 
to_char(import_dt,'YYMM') "year and month", 
SUM(count(pers_nr)) OVER (ORDER BY year) 
FROM .... 

が、それはabitの

に役立ちます願っていた場合のいずれかにもpers_id やアプリケーションのコード内のためRANK()を使用して、NULL値に置き換えることができ 残ります