2017-09-29 19 views
-3

トランザクション表選択合計

No Date  Amount 
1 06-07-2017 1000 
2 06-07-2017 1500 
3 08-07-2017 2000 
4 09-07-2017 2000 
5 09-07-2017 2000 
6 09-07-2017 2000 

は、単一のクエリ(クエリなしループ)

No Date  Total Amount 
1 06-07-2017  2500 
2 08-07-2017  2000 
3 09-07-2017  6000 
+1

はい、あります。 (ヒント: 'GROUP BY'と' SUM() ') – jarlh

+0

トランザクションテーブルに実際に' No'という列がありますか?実際には結果に「いいえ」が必要ですが、レコードのものではありませんか? (これは唯一の難しい部分ですが、実際には難しいことではなく、 'ROW_NUMBER'を使用して結果行に番号を付けます。' No'列が必要ない場合は、 –

答えて

1

でこの結果を達成することが可能ですあなたはGroup Byをお探しですか?

select Trunc("Date"), -- we have to put ".." since Date is a Keyword in Oracle 
      sum(Amount) as "Total Amount" 
     from MyTable 
    group by Trunc("Date") 
    order by Trunc("Date") 

編集時間一部が切り捨てされるべきであるDateフィールドは、日付と時間が含まれているようだ - Truncを - 正確にするために(コメントを参照してください)

+0

その列の別名を一重引用符で囲みます - Oracleはそれを受け入れますか? – jarlh

+0

@jarlh:タイプミスでご迷惑をお掛けします。「合計金額」は二重引用符で囲んでください。 –

+0

日付が要約されず、合計金額が表示されません。 – Angger

1

を集約するとき結果:

select row_number() over (order by date) as No, 
     date, sum(amount) as "Total Amount" 
from t 
group by date 
order by date; 

e:Oracleでは、dateデータ型に時間コンポーネントが含まれている可能性があります。これは出力には表示されません。もしそうなら、集合体はあなたが期待することをしません。この場合は、

select row_number() over (order by trunc(date)) as No, 
     trunc(date) as date, sum(amount) as "Total Amount" 
from t 
group by trunc(date) 
order by trunc(date); 
+0

これは動作しません。それはSelectで使用しているときにgroup by節で 'rownum'を使用していないので、' ORA-00979:GROUP BY式ではありません.'というエラーが発生します。 – XING