使用一个Oracle 11g DB,我正在寻找一种方法来将我的查询结果中的两行从一个表合并到一行中,但也允许NULL值数据尚未输入。来自同一个表的Oracle多重连接查询显示重复值
基本上我有这样的:
TABLE1包含对象识别
TABLE2包含对象数据的两行(A型& B)
我想我需要运行外JOIN,它只在获取对象数据类型A时工作,但当我添加第二个JOIN时,我为B的每一行获得多个A的重复行。
因此,如果有4个A值和5个B值,我会的拭目以待5行A对B的每一行(共20行)
SELECT T1.NAME, T2a.VALUE as TYPE_A, T2b.VALUE as TYPE_B
FROM TABLE1 T1
LEFT OUTER JOIN TABLE2 T2a ON (T1.ID = T2a.ID AND T2a.TYPE='A')
LEFT OUTER JOIN TABLE2 T2b ON (T1.ID = T2b.ID AND T2b.TYPE='B')
我想要得到这个(见A如何有6项,B有5个):
NAME TYPE_A TYPE_B
ID1 VALUE1 VALUE2
ID1 VALUE1 VALUE2
ID1 VALUE1 (NULL)
ID1 VALUE1 VALUE2
ID1 (NULL) VALUE2
ID1 VALUE1 (NULL)
ID1 (NULL) VALUE2
ID1 VALUE1 (NULL)
任何帮助将不胜感激。
KS
你没有在查询任何其他加盟?你确定'ID'在它们各自的表中是唯一的吗? – 2014-10-06 16:37:04
对我来说,你只是想旋转类型的数据...... – xQbert 2014-10-06 16:51:14
ID1在这个例子中是相同的,TYPE_A和TYPE_B的数据是不同的。基本上我们有一种产品可以有两种类型的测试。测试是在单独的行(A和B)上,我需要将它们合并为一行:product,testA,testB。如果有5个testA和6个testB,我似乎会得到30行(每个testB有一个testA行) – Casper 2014-10-07 15:33:20