SQL-запрос - псевдонимы + разные периоды + разные таблицы - PullRequest
0 голосов
/ 03 июля 2011

Я использую жабу для оракула, и у меня возникли различные проблемы.

Псевдоним - Когда я хочу использовать один и тот же столбец дважды?!
Предположим, что у нас есть таблица x, в которой есть col1, col2, col3. Col1 содержит контактные номера клиентов (211 212 213 и более)

И есть еще одна таблица, y, которая имеет col1, col4, col5. Col1 в обеих таблицах равны. Col4 показывает, является ли число основным или второстепенным.

Таблица y

(Col1,col4,col5)
(211,Main,v)
(212,Secondary,s)
(213,Secondary,w)

Я хочу сделать следующее:

SELECT col2, col1 as mainNumbet, col1 as secondNumber
  FROM x
 WHERE mainNumber IN (SELECT col1 
                        FROM y 
                       WHERE col4 = 'main')
   AND SecondNumber IN (SELECT col1 
                          FROM y 
                         WHERE col4 = "secondary")

Но там говорится, что есть проблема! ??

Ответы [ 2 ]

1 голос
/ 03 июля 2011

Есть несколько проблем с вашим кодом.

Возможно, это то, что вы хотите:

SELECT x.col2, 
       CASE WHEN col4 ='main'      THEN x.col1 END AS mainNumber,
       CASE WHEN col4 ='secondary' THEN x.col1 END AS secondNumber, 
FROM x
  JOIN y
    ON x.col1 = y.col1
0 голосов
/ 04 июля 2011

Вы не говорите, что такое col2, но вы берете один и тот же столбец (col1) из одной и той же строки одной и той же таблицы и пытаетесь присвоить ей разные значения (main_number и second_number)

SELECT col2, col1 as mainNumbet, col1 as secondNumber
  FROM x

Если COL1 уникален для 'y', то он может быть только основным ИЛИ вторичным, так что это должно работать

SELECT col2, col1 as number, (select col4 from y where y.col1=x.col1) type
  FROM x

Если COL1 НЕ уникален для 'y', то это может бытьосновной и дополнительный, так что это должно работать

SELECT col2, col1 as number, 
  (select col4 from y where y.col1=x.col1 and col4 = 'main' and rownum=1) m_ind,
  (select col4 from y where y.col1=x.col1 and col4 = 'secondary' and rownum=1) s_ind
FROM x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...