2012-03-16 7 views
0

以下のサブクエリからいくつかの列を返す方法を検索することで見つけることができません。特にB.TAP_STAT_HSL/C.TAP_STAT_HSL。代わりに参加するべきかどうかは分かりませんが、どんな助けでも大歓迎です。Oracleサブクエリー(サブクエリ列の表示)

SELECT 

    A.HSE_KEY_HSE AS HOUSEKEY, 
    A.DROP_STAT_HSE AS DROPSTATUS 
    A.TAP_STAT_HSL AS ITAPSTAT 

    FROM OPS$SEA.HSE_BASE,OPS$SEA.HSL_LOB,OPS$SEA.OOR_ORDER_OPEN A 

    WHERE A.HSE_KEY_HSE = A.HSE_KEY_HSL 
    AND A.HSE_KEY_HSL = A.HSE_KEY_OOR 
    AND A.DROP_STAT_HSE = '1' 
    AND A.LOB_IND_HSL = 'I' 
    AND A.TAP_STAT_HSL IN ('0','2') 
    AND A.ORD_STAT_OOR <> 'O' 
    AND EXISTS (SELECT 1 

    FROM OPS$SEA.HSE_BASE B,OPS$SEA.HSL_LOB B, OPS$SEA.OOR_ORDER_OPEN B 

    WHERE A.HSE_KEY_HSE = B.HSE_KEY_HSE 
    AND B.HSE_KEY_HSE = B.HSE_KEY_HSL 
    AND B.HSE_KEY_HSL = B.HSE_KEY_OOR 
    AND B.DROP_STAT_HSE = '1' 
    AND B.LOB_IND_HSL = 'C' 
    AND B.TAP_STAT_HSL IN ('0','2') 
    AND B.ORD_STAT_OOR <> 'O') 
    AND EXISTS (

    SELECT 1 

    FROM OPS$SEA.HSE_BASE C,OPS$SEA.HSL_LOB C, OPS$SEA.OOR_ORDER_OPEN C 

    WHERE A.HSE_KEY_HSE = C.HSE_KEY_HSE 
    AND C.HSE_KEY_HSE = C.HSE_KEY_HSL 
    AND C.HSE_KEY_HSL = C.HSE_KEY_OOR 
    AND C.DROP_STAT_HSE = '1' 
    AND C.LOB_IND_HSL = 'T' 
    AND C.TAP_STAT_HSL IN ('0','2') 
    AND C.ORD_STAT_OOR <> 'O')} 
+0

サブクエリから選択できません。私はaffraidです... – Aprillion

+0

テーブルBおよび/またはCに「0」と「2」の両方の値が存在する場合、 – Aprillion

+0

'exists'サブクエリから何かを選択できるかどうか尋ねていますか?いいえ、しかしあなたは結合にそれらを回すことができますし、することができます... – Ben

答えて

0

うーん....

私はあなたのクエリは次のように書き換えることができ信じる

WITH Allowed_Rows (houseKey, dropStatus, ipApStat, indicator) 
        as (SELECT a.HSE_KEY_HSE, a.DROP_STAT_HSE, 
           b.TAP_STAT_HSL, b.LOB_IND_HSL 
         FROM OPS$SEA.HSE_BASE as a 
         JOIN OPS$SEA.HSL_LOB as b 
         ON b.HSE_KEY_HSL = a.HSE_KEY_HSE 
         AND b.LOB_IND_HSL IN ('I', 'C', 'T') 
         AND b.TAB_STAT_HSL IN ('0', '2') 
         JOIN OPS$SEA.OOR_Order_Open as c 
         ON c.HSE_KEY_OOR = a.HSE_KEY_HSE 
         AND c.ORD_STAT_OOR <> '0' 
         WHERE a.DROP_STAT_HSE = '1') 
SELECT houseKey, dropStatus, ipApStat 
FROM Allowed_Rows as a 
WHERE a.indicator = 'I' 
AND EXISTS (SELECT '1' 
      FROM Allowed_Rows as b 
      WHERE b.houseKey = a.houseKey 
      AND b.indicator = 'C') 
AND EXISTS (SELECT '1' 
      FROM Allowed_Rows as b 
      WHERE b.houseKey = a.houseKey 
      AND b.indicator = 'T') 

はあなたが適切にあなたのテーブルの一部を修飾していない、と使用(私は驚いていますが、構文エラーを生成しませんでした)複数のテーブルの同じエイリアスは、実際にどこに属しているかを推測する必要がありました。他の(リストにない)要件と制約に応じて、いくつかのバリエーションが可能です。

なぜ、他の値TAP_STAT_HSLを返す必要がありますか?可能なすべての組み合わせが必要ですか? BまたはCの代わりにの行の値はAですか?何?

関連する問題