Sql 根据现有结果选择另一个值-Oracle

Sql 根据现有结果选择另一个值-Oracle,sql,oracle,Sql,Oracle,我有以下生成特定输出的要求 表e\u t\d b_c e_no r_no o_b A XL25631 BC25896 B BC25896 XL25631 X0001 A RT85962 EW89656 L0002 B EW89656 RT85962 A BF12345 X0001 A BD456321 X0001 A DF85962 X0001 A WS25641 X0001 SELE

我有以下生成特定输出的要求

表e\u t\d

b_c e_no    r_no    o_b
A   XL25631 BC25896 
B   BC25896 XL25631 X0001
A   RT85962 EW89656 L0002
B   EW89656 RT85962 
A   BF12345         X0001
A   BD456321        X0001
A   DF85962         X0001
A   WS25641         X0001

SELECT t1.a_d,
       (CASE
            WHEN t1.o_b IS NULL AND t1.b_c = 'B'
            THEN
                (SELECT t1.o_b
                   FROM e_t_d t1
                  WHERE t1.e_no = t1.r_no AND t1.b_c = 'A')
            WHEN t1.o_b IS NULL AND t1.b_c = 'A'
            THEN
                (SELECT t1.o_b
                   FROM e_t_d t1
                  WHERE t1.e_no = t1.r_no AND t1.b_c = 'B')
            ELSE
                t1.o_b
        END)
           AS reference_no
  FROM e_t_d t1
 WHERE t1.b_c IN ('A', 'B') AND t1.d_id IN ('20', '35')
       AND ( (t1.a_d >= '1-Apr-2018' AND t1.a_d <= '15-Apr-2018')
            OR (t1.a_r >= '1-Apr-2018' AND t1.a_r <= '15-Apr-2018'))

也许我遗漏了一些东西,但是您定义为
的表我尝试获取的结果是以下
报告了具有
o_b的行不为空
Hi,不是这样的。也可以是空的。我错误地没有包括在问题中。可能有一些行没有o_b值,但如果它有r_no,则只有它应该检查其他参数。希望现在天气转晴。我使用的结果集非常大,因此我无法在这里复制粘贴所有内容。
b_c e_no    r_no    o_b
B   BC25896 XL25631 X0001
A   RT85962 EW89656 L0002
A   BF12345         X0001
A   BD456321        X0001
A   DF85962         X0001
A   WS25641         X0001