Oracle SQL:从多个表

时间:2017-07-24 13:36:09

标签: sql excel oracle microsoft-query

这个问题类似于 my previous question.

的链接

我正试图将其分解一点,以便最后两列有条不紊,没有重复。

我正尝试在this site.

上执行与评分最高的解决方案类似的操作

我正在使用excels查询构建器来尝试执行此操作,因为除了简单的sql和数据库基础之外,我并不熟悉。

声明目前是:

SELECT WORK_CENTER.EQNO,
(
SELECT
UD_DATA.CUSER AS U1
FROM UD_DATA
FULL OUTER JOIN 
WORK_CENTER 
ON UD_DATA.PARENT_ID = WORK_CENTER.ID 
LEFT JOIN 
UD_COLS 
ON UD_DATA.UD_COLS_ID = UD_COLS.ID
WHERE UD_COLS.ID='16'
),
(
SELECT
UD_DATA.CUSER AS U2
FROM UD_DATA
FULL OUTER JOIN WORK_CENTER ON UD_DATA.PARENT_ID = WORK_CENTER.ID 
LEFT JOIN UD_COLS ON UD_DATA.UD_COLS_ID = UD_COLS.ID
WHERE UD_COLS.ID='17'
)

FROM   
IQMS.UD_DATA UD_DATA
FULL OUTER JOIN 
IQMS.WORK_CENTER WORK_CENTER 
ON WORK_CENTER.ID=UD_DATA.PARENT_ID
LEFT OUTER JOIN 
IQMS.UD_COLS UD_COLS 
ON 
UD_DATA.UD_COLS_ID = UD_COLS.ID 
ORDER BY WORK_CENTER.EQNO

期望的结果:

EQNO | U1   | U2
-----+------+------
001  | 1000 | test1
002  | 2000 | test2
003  | 3000 | test3
004  | 4000 | test4

但我现在正在

  

ORA-01427:单行子查询返回多行   感谢Pattrick Bacon。指出我的俯视有LEFT JOIN JOIN

在链接的问题中,有人提出错误输出的原因是由于两个表交叉连接,我试图在线了解它,我无法真正看到它周围的解决方案,除了尝试此

我没有改变过多的子查询本身,但我显然做错了什么。有人能帮忙吗?

  

有人要求提供更多例子

来自我的链接问题:

这是期望的结果(没有显示空格列和格式错误的表格道歉):

EQNO | CNTR_TYPE | CNTR_DESC | MFGCELL | MFG_TYPE | CUSER | U2

001 | 110T-40MM | DEMAG SYSTEM 110-430 | MOLDING | INJECTION | 1000 | test1

002 | 150T-25MM | DEMAG SYSTEM 150-320 | MOLDING | INJECTION | 2000 | test2

003 | 150T-45MM | DEMAG SYSTEM 150-610 | MOLDING | INJECTION | 3000 | test3

005 | 150T-45MM | DEMAG EXTRA  500-610 | MOLDING | INJECTION | 4000 | test4

但我得到的是:

EQNO | CNTR_TYPE | CNTR_DESC | MFGCELL | MFG_TYPE | CUSER | U2 | E2

001 | 110T-40MM | DEMAG SYSTEM 110-430 | MOLDING | INJECTION | 1000 | test1 | 001

001 | 110T-40MM | DEMAG SYSTEM 110-430 | MOLDING | INJECTION | 1000 | test2 | 002

001 | 110T-40MM | DEMAG SYSTEM 110-430 | MOLDING | INJECTION | 1000 | test3 | 003

001 | 110T-40MM | DEMAG SYSTEM 110-430 | MOLDING | INJECTION | 1000 | test4 | 005

002 | 150T-25MM | DEMAG SYSTEM 150-320 | MOLDING | INJECTION | 2000 | test1 | 001

002 | 150T-25MM | DEMAG SYSTEM 150-320 | MOLDING | INJECTION | 2000 | test2 | 002

002 | 150T-25MM | DEMAG SYSTEM 150-320 | MOLDING | INJECTION | 2000 | test3 | 003

002 | 150T-25MM | DEMAG SYSTEM 150-320 | MOLDING | INJECTION | 2000 | test4 | 005

003 | 150T-45MM | DEMAG SYSTEM 150-610 | MOLDING | INJECTION | 3000 | test1 | 001

003 | 150T-45MM | DEMAG SYSTEM 150-610 | MOLDING | INJECTION | 3000 | test2 | 002

003 | 150T-45MM | DEMAG SYSTEM 150-610 | MOLDING | INJECTION | 3000 | test3 | 003

003 | 150T-45MM | DEMAG SYSTEM 150-610 | MOLDING | INJECTION | 3000 | test4 | 005

005 | 150T-45MM | DEMAG EXTRA  500-610 | MOLDING | INJECTION | 4000 | test1 | 001 

005 | 150T-45MM | DEMAG EXTRA  500-610 | MOLDING | INJECTION | 4000 | test2 | 002

005 | 150T-45MM | DEMAG EXTRA  500-610 | MOLDING | INJECTION | 4000 | test3 | 003

005 | 150T-45MM | DEMAG EXTRA  500-610 | MOLDING | INJECTION | 4000 | test4 | 005

Union并没有真正起作用,因为它只是将两列“CUSER”和“CUSER AS U2”放在一起,因为它们实际上是同一列。

  

添加更多样本数据

这里有一点来自UD_DATA表

ID     | UD_COLS_ID|PARENT_ID|CUSER
-------+-----------+---------+------
12312  | 16        | 5210    | 1000
12313  | 17        | 5210    | test1
12314  | 16        | 5212    | 2000
12315  | 17        | 5212    | test2
12316  | 16        | 5213    | 3000
12317  | 17        | 5213    | test4
12318  | 16        | 5214    | 4000
12319  | 17        | 5214    | test4

我的主要问题是只显示CUSER列中的日期

      |COL1 | COL2|
      +-----+-----+
      | 1000|test1|
      | 2000|test2|
      | 3000|test3|
      | 4000|test4|

但是从链接的问题我得到了类似的东西:

      |COL1 | COL2|
      +-----+-----+
      | 1000|test1|
      | 1000|test2|
      | 1000|test3|
      | 1000|test4|
      | 2000|test1|
      | 2000|test2|
      | 2000|test3|
      | 2000|test4|
      | 3000|test1|
      | 3000|test2|
      | 3000|test3|
      | 3000|test4|

这就是我一直在努力修复

1 个答案:

答案 0 :(得分:0)

你实际上是在PIVOT之后;不需要连接等。

E.g:

.outer{
position:relative;
width:1920px;
height:400px;
background: rgba(0,0,0,.5);
}

.inner{
position:absolute;
bottom:10%;
text-align: center;
margin: 0 auto;
width: 100%;
background: rgba(0,0,0,.5);
}