我有以下要求生成特定输出。
表e_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'))
使用上面的查询,我想要实现的目标如下。
以下是我想要满足的条件。
上面的查询我没有给出第二个条件的值。
r_no列包含许多类型的数字,我只包含少数,同样适用于o_b列。
我想要的结果如下。
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