这个问题有点链接到我之前的问题。
我试图将其分解一下,以使最后两列井井有条且没有重复。
我正在尝试做一些类似于此站点上最受好评的解决方案的事情。
我正在使用 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|
这就是我一直在努力解决的问题