SQL查询 - 别名+不同的句点+不同的表

时间:2011-07-03 16:00:02

标签: sql oracle

我正在使用toad for oracle,我遇到了不同的问题。

别名 - 当我想两次使用同一列时?!
让我们假设我们有一个表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 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

你没有说col2是什么,但是你从同一个表的同一行获取相同的列(col1)并试图为它分配不同的含义(main_number和second_number)

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

如果COL1在'y'上是唯一的,那么它只能是主要的OR或辅助,所以这应该有效

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