我有三个表,如下所示:
我正在尝试获得如下输出:
这是我到目前为止尝试过的
SELECT table1.tb1_a,
CASE WHEN table3.tb3_a IS NOT NULL THEN
tb3_b
ELSE 'No city for him yet'
END AS 'City'
FROM table1
LEFT OUTER JOIN table2 ON
table1.tb1_a = table2.tb2_a
LEFT OUTER JOIN table3 ON
table2.tb2_a = table3.tb3_a
WHERE table3.tb3_a IN
(
)
现在我在努力选择tb3_a列的最大值
最佳答案
这应该可以满足您的需求:
SELECT t1.tb1_a, COALESCE(t3.tb3_a, 'No city for him yet') AS City
FROM table1 t1
LEFT JOIN (
SELECT MAX(tb2_b) AS tb2_b, tb2_a
FROM table2
GROUP BY tb2_a
) t2 ON (t2.tb2_a = t1.tb1_a)
LEFT JOIN table3 t3 ON (t3.tb3_a = t3.tb2_b);
关键是中间的嵌入式 View ,我们在其中创建一种虚拟表,其中包含每个
tb2_b
的最大tb2_a
值。然后,我们可以加入到这一过程中以达到期望的结果。关于sql - 左外连接Oracle中的三个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15008371/