簡體   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