如何使用Oracle SQL从2个值中获取最小值
我有两张桌子TAB1和TAB2。两者都有3列,每个段、级别和值。以下是两个表中的数据:如何使用Oracle SQL从2个值中获取最小值,sql,oracle,Sql,Oracle,我有两张桌子TAB1和TAB2。两者都有3列,每个段、级别和值。以下是两个表中的数据: TAB1 SEGMENT LEVEL VALUE ---------------------------------- SEG1 1 1000 SEG1 2 900 SEG1 3 800 SEG2 1 4000 SEG2
TAB1
SEGMENT LEVEL VALUE
----------------------------------
SEG1 1 1000
SEG1 2 900
SEG1 3 800
SEG2 1 4000
SEG2 2 3000
SEG2 3 1000
SEG3 1 5000
SEG3 2 3500
SEG3 3 2200
TAB2
SEGMENT LEVEL VALUE
----------------------------------
SEG1 1 2000
SEG1 2 1800
SEG1 3 1200
SEG2 1 3000
SEG2 3 2500
SEG4 1 10000
SEG4 2 8100
SEG4 3 2900
因此,正如您所看到的,我在两个表和一些段中总共有四个段SEG1、SEG2、SEG3和SEG4,两个表中都没有风险等级。我希望两个表中的最小值用于段和级别列的组合。查询的输出应该如下所示:
SEGMENT LEVEL VALUE
----------------------------------
SEG1 1 1000
SEG1 2 900
SEG1 3 800
SEG2 1 3000
SEG2 2 3000
SEG2 3 1000
SEG3 1 5000
SEG3 2 3500
SEG3 3 2200
SEG4 1 10000
SEG4 2 8100
SEG4 3 2900
我尝试通过完全外部连接实现它,但输出不是我所期望的:
SELECT t1.SEGMENT, t1.LEVEL, t2.SEGMENT, t2.LEVEL, LEAST(t1.VALUE, t2.VALUE)
FROM TAB1 t1
FULL OUTER JOIN TAB2 t2
ON t1.SEGMENT = t2.SEGMENT
AND t1.LEVEL = t2.LEVEL;
非常感谢您的帮助。数据库是Oracle。试试这个
select segment,level,min(value) value from (
select segment,level,value from tab1
UNION ALL
select segment,level,value from tab2
) d group by segment,level
我要注意的是,
段
,级别
是oracle中的保留行,您不能使用它们