2016-10-19 5 views
0

私は複雑なクエリを持ち、テキストデータの行をフェッチします。この部分はうまく動作します。返された行数を含めると、エクスポートされたスプレッドシートのフィルタリングが簡単になります。Oracle 11を使用してsubselect結果セットから複数の値を選択する方法は?

だから我々はこの種のクエリを持っていると仮定すると:

SELECT * FROM (quoted query) 

、それは私に結果セットを与える:私は行うことができます

SELECT 
    TRIM(COL_1 || ' (' || COL_2 || ')') AS MY_DATA 
FROM 
    TABLE_1 
    INNER JOIN TABLE_2... 
WHERE 
    TABLE_1.COL_1=... 
ORDER BY 
    TABLE_1.COL_1 

SELECT MY_DATA FROM (quoted query) 

をし、それは私に結果セットを提供します:

私が行うことができます。

SELECT COUNT(MY_DATA) FROM (quoted query) 

をし、それが私の行数を与える:

私が行うことができます。

しかし、私は試してみてください。

SELECT COUNT(MY_DATA), MY-DATA FROM (quoted query) 

私は

ORA-00937取得:Oracleの11を使用していない単一グループのグループ機能

を、私は両方を選択することができます副選択からの行数と行の詳細私の場合の副選択は複雑であり、カウントと細部を別々に得るためにそれを複製したくない。私はWITH/ASを試しましたが、同じエラーが発生しました。

====

注:これは、提案、質問の重複ではありません - 私は、私の場合には任意のグループ化を使用していません。これはグループ化の問題ではなく、誤解を招くエラーメッセージです。あなたがここに分析関数たい

+0

この質問は、参照されている質問と重複していません。この質問は、詳細レコードごとにカウントを返すかどうかを尋ねます。 – DCookie

答えて

3

SELECT COUNT(MY_DATA) OVER() ct, MY-DATA FROM (quoted query) 

をこれはあなたに返された各行の選択によって返されたレコードの合計数のカウントを与えます。

+0

@ user6651485 - 'select count(*)...'と 'select my_data ... 'の間で十字結合(デカルト結合)を行うこともできます。左辺には高価ではありません1行だけです。しかし、これは依然としてクエリの結果セットを2回、カウントを取得するために1回、次にジョインを再度実行する必要があります。これは分析関数の大きな利点であり、なぜDCookieの答えが正しいのでしょうか。 – mathguy

+0

魅力的な作品です。ありがとう! – user6651485

関連する問題