Oracle SubQuery (Показать столбцы подзапроса) - PullRequest
0 голосов
/ 17 марта 2012

Похоже, я не могу найти в поиске, как я смогу вернуть некоторые столбцы из приведенных ниже подзапросов.В частности, B.TAP_STAT_HSL / C.TAP_STAT_HSL.Я не уверен, стоит ли мне присоединяться вместо этого, но любая помощь будет принята с благодарностью.

   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')}

1 Ответ

0 голосов
/ 17 марта 2012

Хммм ....

Я считаю Ваш запрос может быть переписан следующим образом:

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?Что?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...