1

私は理解しようとしてあまりにも長い間費やしてきた問題を抱えています。

私は冬眠するのが初めてで、次のようなデータがあります。

ここに画像の説明を入力

このデータを返すクエリを次のように書きたいと思います。

ここに画像の説明を入力

休止状態のより細かい機能のいくつかにまだ慣れていないので、これが理想的な SQL ステートメントだけで実行できる場合。私は多くのことを試しましたが、ユニオンでできると思っていましたが、残念ながら休止状態はユニオンをサポートしていません。

どんな提案でも大歓迎です。提案がより冬眠志向のアプローチである場合は、可能な限り詳細をいただければ幸いです。

アップデート://

ANGELO のコメントから、次を使用してこれを機能させることができました。

String newQuery = "";
List<?> list = null;
Query quer = null;
Session session = null;
session = HibernateUtilities.getSessionFactory().openSession();

newQuery = 
"SELECT DISTINCT o.APPLICATION,(SELECT DATA FROM " + dataTable +  " gsm WHERE gsm.APPLICATION = o.APPLICATION AND gsm.NETWORK_TYPE = 'GSM Usage') AS gsm, (SELECT DATA FROM " + dataTable +  " wifi WHERE wifi.APPLICATION = o.APPLICATION AND wifi.NETWORK_TYPE = 'Wi-Fi Usage') AS wifi, (SELECT DATA FROM " + dataTable +  " roam WHERE roam.APPLICATION = o.APPLICATION AND roam.NETWORK_TYPE = 'ROAMING Usage') AS roaming FROM " + dataTable +  " o";

quer = session.createQuery(newQuery);
list = quer.list();
session.close();
4

1 に答える 1

1

サブセレクトを使用できます (SQL では、Hibernate では機能しないと Marko がコメントで述べています)。

SELECT DISTINCT o.application, 
    (SELECT sum(DATA) FROM tbl gsm WHERE gsm.application = o.application AND gsm.network_type = 'GSM') AS gsm, 
    (SELECT sum(DATA) FROM tbl wifi WHERE wifi.application = o.application AND wifi.network_type = 'WIFI') AS wifi, 
    (SELECT sum(DATA) FROM tbl roam WHERE roam.application = o.application AND roam.network_type = 'ROAMING') AS roaming
FROM tbl o

(私はあなたのテーブルが呼び出されると仮定していることに注意してくださいtbl

于 2012-04-23T18:02:47.557 に答える