2016-12-08 3 views
-2

以下のクエリを使用しているときに私の要件ですが、正しい応答を得ていますが、別個のレコードを選択したいのですが、下のクエリで区別する方法を教えてください。1つのクエリエラーについて

SELECT LISTAGG(PAC.DESCRIPTION || ' = '|| ORL.ITEM_PACKAGE_COUNT , ',') WITHIN GROUP (ORDER BY PAC.DESCRIPTION || ' = '|| ORL.ITEM_PACKAGE_COUNT) 
FROM ORDER_RELEASE_LINE ORL , PACKAGED_ITEM PAC , SHIPMENT SH , ORDER_MOVEMENT OM 
WHERE ORL.PACKAGED_ITEM_GID = PAC.PACKAGED_ITEM_GID 
AND OM.ORDER_RELEASE_GID = ORL.ORDER_RELEASE_GID 
AND OM.SHIPMENT_GID = SH.SHIPMENT_GID 
AND SH.SHIPMENT_GID = 'ULA/SAO.5000072118' 
+0

(PAC.DESCRIPTION BY GROUP(ORDER || '=' WITHIN LISTAGG(PAC.DESCRIPTION || '= '|| ORL.ITEM_PACKAGE_COUNTを、'、')を選択|| (FROM ORL.ITEM_PACKAGE_COUNT) はORDER_RELEASE_LINE ORL、PACKAGED_ITEM PAC、出荷SH、ORDER_MOVEMENT OM ORL.PACKAGED_ITEM_GID = PAC.PACKAGED_ITEM_GID AND OM.ORDER_RELEASE_GID = ORL.ORDER_RELEASE_GID AND OM.SHIPMENT_GID = SHは異なるPAC.DESCRIPTIONを選択します。 SHIPMENT_GID とSH.SHIPMENT_GID = 'ULA/SAO.5000072118')PAC) –

+3

質問に質問を追加してください(そして適切な形式で)コメントとしてではなく、 –

+0

私はこれを行うことになります。私はこれに新しいので、コメントとしてこれを入れました。 –

答えて

0

あなたのサブクエリはSELECT DISTINCT PAC.DESCRIPTION返しますが、外側のクエリがサブクエリによって返されていない内部クエリLISTAGG(PAC.DESCRIPTION || ' = '|| ORL.ITEM_PACKAGE_COUNT , ',')ORL.ITEM_PACKAGE_COUNTからエイリアスと値を使用しています。試してみてください:

SELECT LISTAGG(SUBQ.DESCRIPTION || ' = '|| SUBQ.ITEM_PACKAGE_COUNT , ',') 
      WITHIN GROUP (ORDER BY SUBQ.DESCRIPTION || ' = '|| SUBQ.ITEM_PACKAGE_COUNT) 
    FROM (SELECT DISTINCT PAC.DESCRIPTION, ORL.ITEM_PACKAGE_COUNT 
     FROM ORDER_RELEASE_LINE ORL , PACKAGED_ITEM PAC , SHIPMENT SH , ORDER_MOVEMENT OM 
     WHERE ORL.PACKAGED_ITEM_GID = PAC.PACKAGED_ITEM_GID 
      AND OM.ORDER_RELEASE_GID = ORL.ORDER_RELEASE_GID 
      AND OM.SHIPMENT_GID = SH.SHIPMENT_GID 
      AND SH.SHIPMENT_GID = 'ULA/SAO.5000072118') SUBQ 

は、一般的には、参加したデータの結果をテーブルの内側のクエリにし、外側のクエリで同じエイリアスPACを使用するには、間違ったやり方です。別の間違った練習が使用している暗黙の代わりに定義するので合流する明示的な

+0

あなたにはお返事ありがとうございます。列がないため、Item_package_countは有効ではありません(ITEM_PACKAGE_COUNT)という名前のnがpackaged_itemテーブルに存在します。だから内側のクエリでは、私は選択PIC.DESCRIPTION、ORL.ITEM_PACKAGE_COUNTを取ることができますが、問題は私はOrder_release_lineテーブルからitem_package_countを取ることができるということです。助けてください –

+1

@otmnotificationsしかし、 'LISTAGG'の' PAC'は、サブクエリ全体を参照して、単一のテーブル 'PACKAGE'を参照しません。私は 'SUBQ'に変更しました – Kacper

+0

@otmnotificationsそのクエリがうまくいかない場合は、質問を編集し、クエリに使用されているすべてのテーブルの説明を含めて、取得する必要があるものを記述してください。 – Kacper

0

あなたは単にあなたのクエリでDISTINCTを使用することができ、これらの個別の値のLISTAGGを構築し、それを包むその後、クエリから異なる値を取得し、する必要がある場合INNER JOIN ONあなたが使用する外部のものLISTAGG。例えば

with dupValTab(s) as 
(
    select 'something' from dual union all 
    select 'something else' from dual union all 
    select 'something' from dual 
) 
select listagg(s, ', ') within group (order by s) 
from (
     select distinct s 
     from dupValTab 
    ) 
関連する問題