2017-05-01 18 views
1

デスクトップアプリケーションの開発にH2埋め込みデータベースを使用していますが、H2データベースはSQL関数と同じ機能をすべて備えています。しかし、私はH2データベースのROLLUP機能を使用するために1ヶ所で立ち往生しています。またはH2データベースにROLLUPの他の置き換えがありますか?H2データベースのロールアップ機能

マイクエリ必要がある:

私はH2 DATBASE

Customer Product  Price 
    ------------------------------- 
    Suryam  Shampo  100 
       Rubber  150 
       Glass   250 
       Total   500----->Total 
    Raghu  Bottel  60 
       Biscuit  180 
       Total   240----->Total 
       Grand Total 740----->Grand Total 

に従うように私のデータを表示したい誰かに私を助けて

+2

各ロールアップの論理グループを形成するために使用されている(図示せず)の列がありますか? –

+0

はいお客様の名前でグルーピングして、忘れていたことを言及しています –

答えて

1

は、私が言及H2のドキュメントに何かを見つけることができませんでしくださいクエリGROUP BYROLLUPをサポートします。良いことは、GROUP BYと一連のユニオンを使用してこの機能をシミュレートできることです。

SELECT Customer, Product, Price 
FROM yourTable 
UNION ALL 
SELECT Customer, 'Total', SUM(Price) 
FROM yourTable 
GROUP BY Customer 
UNION ALL 
SELECT '', 'Grand Total', SUM(Price) 
FROM yourTable 
ORDER BY CASE WHEN Customer = '' THEN 1 ELSE 0 END, 
     Customer, 
     CASE WHEN Product = 'Total' THEN 1 ELSE 0 END, 
     Product; 

出力:

enter image description here

ここでは、MySQLでのデモへのリンクです。あなたとは異なるデータベースですが、UNIONCASEの動作は、MySQLと同じH2でなければなりません。

Rextester

+0

私のクエリに大きな関心をお寄せいただきありがとうございます。私の+1 –

関連する問題