Измените поля и таблицы, к которым осуществляется доступ в запросе, из тела выражения CASE [Oracle SQL] - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь изменить поля и таблицы, к которым обращаются в запросе, из тела выражения CASE:

PACOTE AS (SELECT *
             FROM (SELECT CASE 
                            WHEN OE.CUST_STAT_CD = 'Prospect'
                              THEN (TB1.COLUMNONE, TB2.COLUMNTWO
                                    FROM TABLEONE TB1, 
                                         TABLEONE TB2)
                            ELSE (L.COLUMNONE, I.COLUMNTWO
                                  FROM TABLELOREM L, 
                                       TABLEIPSUM I)
                          END
                   )
          )

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Это недействительно SQL:

PACOTE AS (  
 CASE

Возможно, вы намереваетесь:

PACOTE AS (  
 SELECT CASE
0 голосов
/ 07 апреля 2020

То, что вы пытаетесь сделать, - это изменить поля и таблицы, к которым обращаются в запросе, из тела выражения CASE. Я переформатировал ваш код, чтобы прояснить это:

PACOTE AS (SELECT *
             FROM (SELECT CASE 
                            WHEN OE.CUST_STAT_CD = 'Prospect'
                              THEN (TB1.COLUMNONE, TB2.COLUMNTWO
                                    FROM TABLEONE TB1, 
                                         TABLEONE TB2)
                            ELSE (L.COLUMNONE, I.COLUMNTWO
                                  FROM TABLELOREM L, 
                                       TABLEIPSUM I)
                          END
                   )
          )

Извините, но это просто запрещено в SQL. Кроме того, у вас есть псевдоним таблицы OE, который используется в вашем выражении CASE, но не определен где-либо еще, поэтому вам сложно посоветовать, что делать. Как правило, однако, вам нужно использовать UNION, похожий на

SELECT tb1.COLUMN1, tb2.COLUMN2
  FROM TABLEONE tb1,
       TABLETWO tb2
  WHERE oe.CUST_STAT_CD = 'Prospect'
UNION ALL
SELECT l.COLUMNONE, i.COLUMNTWO
  FROM TABLELOREM l,
       TABLEIPSUM i
  WHERE oe.CUST_STAT_CODE <> 'Prospect'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...