2011-07-03 52 views
0

我使用的是forad for oracle,並且遇到了不同的問題。SQL查詢 - 別名+不同時期+不同表格

別名 - 當我想要使用同一列兩次?!
讓我們假設我們有一個表格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") 

但它指出,有一個問題?

+4

當一些「指出有問題」,並希望該問題能幫助獨特 - 它有助於包含告訴你的任何信息。至少像ORA錯誤號一樣......也不介意瞭解Oracle的版本。 –

回答

1

您的代碼有幾個問題。

也許這就是你想要什麼:

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

你不說是什麼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