2011-01-24 7 views
2

I次のステートメントを持っている:選択し、注文SQL文でGroupyの列ことではない方法 - オラクル

私は「表示データ」の出力として望むテーブル Positionsでいくつかの追加の列が存在する
SELECT 
    IMPORTID,Region,RefObligor,SUM(NOTIONAL) AS SUM_NOTIONAL 
From 
    Positions 
Where 
    ID = :importID 
GROUP BY 
    IMPORTID, Region,RefObligor 
Order BY 
    IMPORTID, Region,RefObligor 

が、グループ声明では私は望んでいません。

これらはSite, Desk

最終的な出力は、次の列がありますされています。これを達成するためにどのように

Order BY 
    IMPORTID,Region,Site,Desk,RefObligor 

IMPORTID,Region,Site,Desk,RefObligor,SUM(NOTIONAL) AS SUM_NOTIONAL 

理想的には私は、データは以下のようにソートしたいと思いますか?

+3

これらのフィールドにグループ化したくない場合は、*値*が結果に表示されますか?グループごとにいくつかの値があるので、当然です。 – Tomalak

+3

RDBMSは、集計関数の一部でも、 'GROUP BY'の部分でもない場合、それらのフィールドに使用する' GROUP'の行をどのように知っていますか?ランダムな行が必要ですか? – JNK

+0

Groupy以外の列を選択する方法:http://stackoverflow.com/questions/5815601/oracle-sql-group-by-not-a-group-by-expression-help – tak3shi

答えて

5

GROUP BY句の一部ではない列を含めることは意味がありません。 MIN(X)、MAX(Y)がSELECT句にあり、どの列が他の列(グループ化されていない)から来るべきかを考えてください。

ご使用のOracleのバージョンが最新の場合は、SUM-OVER()を使用して、すべてのデータ行に対してSUM(グループ化)を表示できます。

SELECT 
    IMPORTID,Site,Desk,Region,RefObligor, 
    SUM(NOTIONAL) OVER(PARTITION BY IMPORTID, Region,RefObligor) AS SUM_NOTIONAL 
From 
    Positions 
Where 
    ID = :importID 
Order BY 
    IMPORTID,Region,Site,Desk,RefObligor 

また、あなたは私はこれが

select 
    IMPORTID, 
    Region, 
    Site, 
    Desk, 
    RefObligor, 
    Sum(Sum(Notional)) over (partition by IMPORTID, Region, RefObligor) 
from 
    Positions 
group by 
    IMPORTID, Region, Site, Desk, RefObligor 
order by 
    IMPORTID, Region, RefObligor, Site, Desk; 

であると信じて...しかし、さらになしで伝えるのは難しいですDesk

SELECT 
    IMPORTID,Region,Min(Site) Site, Min(Desk) Desk,RefObligor,SUM(NOTIONAL) AS SUM_NOTIONAL 
From 
    Positions 
Where 
    ID = :importID 
GROUP BY 
    IMPORTID, Region,RefObligor 
Order BY 
    IMPORTID, Region,Min(Site),Min(Desk),RefObligor 
+0

+1 - 上記のコメントを参照してください: ) – JNK

+0

あなたは正直なところですが、この作品ではグループに含まれていない列を含めるのは意味がありません。オーバーパーティションに関する情報をありがとう、私はこれを知らなかった、非常に涼しい! – m3ntat

+0

テーブルにcreate_dtとtype_of_orderがあると、別の日付に作成された異なる種類の注文が必要になると思います。どうすればそれを達成できますか? –

1

Siteのうち、集計を行う必要があります情報および/またはテストデータを含む。

関連する問題