私はこのようなSQL出力を受け取りたいです:
ORDER # | LINE # | PRICE
---------------------------------
AAA | 1 | 20
AAA | 2 | 30
AAA | 3 | 10
TOTAL_PRICE = 60
BBB | 1 | 50
BBB | 2 | 20
TOTAL_PRICE = 70
GRAND_TOTAL = 130
これは可能ですか?
助けてくれてありがとう
注文ごとに集計し、総計を加算します。
select order
, sum(price) total
from table
group by order
union all
select 'grand total' order
, sum(price) total
from table
;
これにより、生データが表形式で提供されます。特別にフォーマットされた出力を生成するには、レポートツールが必要になります。一部のrdbmsには、これを支援できるコマンドラインクライアントがあります(例:oracleのsqlplus)。
編集(OPのコメントによる):
元の注文明細を含め、希望の順序で行を表示するには、追加の機械が必要です。
select *
from (
select order seq
, order
, line
, price total
from table
union all
select order || '-0' seq
, 'TL('||order||')' order
, null line
, total
from (
select order
, sum(price) total
from table
group by order
)
union all
select 'ZZZZZZ-9' seq
, grand total' order
, null line
, sum(price) total
from table
)
order by seq
;
seq
列の実際の構成は、注文コードの実際の形式によって異なります(形式は通常、明確に定義された方法で制約されるため、問題になることはめったにありません)。
前に述べたように、より洗練された出力の場合は、適切なツールを使用することをお勧めします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加