繁体   English   中英

SQL-如何比较同一行中的两个数字

[英]SQL- How to compare two numbers in the same row

我正在Oracle Apex中创建一个数据库,基本上需要比较同一行中的两个数字,以便可以找到最大的数字。 下表示例;

在此处输入图片说明

使用上面的示例,我将如何比较同一行上的1号和2号,例如第一行将6与7进行比较,然后将第二行将3与1进行比较。

如果您的数字有一个最小值(即它们都是正整数),则可以执行以下操作:

Oracle安装程序

CREATE TABLE table_name ( ID, name, number1, number2, number3 ) AS
SELECT 1, 'Jane', 6, 7, 1 FROM DUAL UNION ALL
SELECT 2, 'John', 3, 1, NULL FROM DUAL UNION ALL
SELECT 3, 'Jake', NULL, NULL, 5 FROM DUAL;

查询

SELECT ID,
       NAME,
       GREATEST( NVL( NUMBER1, 0 ), NVL( NUMBER2, 0 ), NVL( NUMBER3, 0 ) ) AS biggest
FROM   table_name;

输出

        ID NAME    BIGGEST
---------- ---- ----------
         1 Jane          7 
         2 John          3 
         3 Jake          5 

如果没有最小值,则可以执行以下操作:

查询2

SELECT ID,
       NAME,
       CASE WHEN NUMBER1 IS NULL AND NUMBER2 IS NULL AND NUMBER3 IS NULL
              THEN NULL
            WHEN NUMBER1 IS NULL AND NUMBER2 IS NULL THEN NUMBER3
            WHEN NUMBER1 IS NULL AND NUMBER3 IS NULL THEN NUMBER2
            WHEN NUMBER2 IS NULL AND NUMBER3 IS NULL THEN NUMBER1
            WHEN NUMBER1 IS NULL THEN GREATEST( NUMBER2, NUMBER3 )
            WHEN NUMBER2 IS NULL THEN GREATEST( NUMBER1, NUMBER3 )
            WHEN NUMBER3 IS NULL THEN GREATEST( NUMBER1, NUMBER2 )
            ELSE GREATEST( NUMBER1, NUMBER2, NUMBER3 )
            END AS biggest
FROM   table_name;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM