Wenn es einen Mindestwert für Ihre Zahlen ist (dh sie sind alle positiven ganzen Zahlen), dann können Sie tun:
Oracle-Setup:
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;
Abfrage:
SELECT ID,
NAME,
GREATEST(NVL(NUMBER1, 0), NVL(NUMBER2, 0), NVL(NUMBER3, 0)) AS biggest
FROM table_name;
Ausgabe:
ID NAME BIGGEST
---------- ---- ----------
1 Jane 7
2 John 3
3 Jake 5
Wenn kein Minimalwert ist, dann können Sie tun:
Abfrage 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;
Wie beurteilen Sie das Ergebnis des Vergleichs zeigen? Welche Ausgabe möchten Sie von Ihrer Anfrage? –
Sie sollten in der Lage Fall zu tun, wenn (number1> number2) dann etwas tun, nur um zu beginnen mit ... – cableload
Hallo Alex, ich möchte es nur in einer Select-Abfrage zeigen, wo es die höchste Nummer wählt – BiscuitCookie