Frage

Die ganze Frage ist so ziemlich im Titel. Für jede Zeile der Tabelle würde Ich mag das Maximum einer Teilmenge von Spalten auswählen.

Zum Beispiel aus dieser Tabelle

name m1 m2 m3 m4
A    1  2  3  4
B    6  3  4  5
C    1  5  2  1

das Ergebnis wäre

name max
A    4
B    6
C    5

Die Abfrage muss kompatibel Oracle 8i sein.

War es hilfreich?

Lösung

Vor diesen Testdaten ...

SQL> select *
  2  from your_table
  3  /

NAME         M1         M2         M3         M4
---- ---------- ---------- ---------- ----------
A             1          2          3          4
B             6          3          4          5
C             1          5          2          1

SQL>

... ein einfacher GREATEST () Aufruf wird das gewünschte Ergebnis:

SQL> select name
  2          , greatest(m1,m2,m3,m4)
  3  from your_table
  4  /

NAME GREATEST(M1,M2,M3,M4)
---- ---------------------
A                        4
B                        6
C                        5

SQL>

Andere Tipps

Mit GREATEST aber handhaben auch möglich NULL des

SELECT name, GREATEST(NVL(m1,0), NVL(m2,0), NVL(m3,0), NVL(m4,0)) AS "Max"
FROM yourtable

Input:

name m1 m2 m3 m4
A    1  2  3  4
B    6  3  4  5
C    1  5  2  1

Ausgabe:

NAME Max
A    4
B    6
C    5

SQL Fiddle: http://sqlfiddle.com/#!4/ae268/7 / 0

Input:

name m1 m2   m3 m4
A    1  2    3  null
B    6  null 4  5
C    1  5    2  1

Ausgabe:

NAME Max
A    3
B    6
C    5

SQL Fiddle: http://sqlfiddle.com/#!4/b1c46/1 / 0

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top