0

(Oracleの場合)さまざまな詳細レベルでデータを選択する必要があります。次のようなデータを含むテーブルがあります。

c1  c2  c3  c4
a   a1  10  5
a   a2  10  5
b   b1  10  5
b   b2  10  5

データを次のように返すクエリを作成する必要があります。

c1  c2  c3
a   20  10   --aggregated data
a1  10  5    --lowest granular level data
a2  10  5    --lowest granular level data
b   20  10
b1  10  5    -- data of b1, b2 should follow the data of b; likewise a1, a2 should follow data of a
b2  10  5

最も低い詳細レベルと集約レベルの両方でデータを選択する必要があるため、これは非常に珍しいことです。これどうやってするの?

4

2 に答える 2

2

あるデータセットから別のデータセットにどのように取得するかを教えていないので、確信が持てません。私の推測では、しかし、あなたは次のようなものが欲しいと思います

SELECT c1, sum(c3) c2, sum(c4) c3
  FROM table_name
 GROUP BY c1
UNION ALL
SELECT c2, sum(c3), sum(c4)
  FROM table_name
 GROUP BY c2;
于 2012-08-22T05:24:24.627 に答える
1

あなたはこれから始めることができます:

SELECT C1, C2, sum(c3), sum(c4), grouping_id(c1, c2)
FROM table_name
group by rollup(c1,c2)

必要なグループのみを取得するには

SELECT C1, C2, sum(c3), sum(c4), grouping_id(c1, c2)
FROM table_name
group by GROUPING SETS ( (c1, c2), c1)

ここで別の例と説明を参照してください。

于 2012-08-22T06:06:53.367 に答える