Den Maximum Wert einer einzelnen Spalte zu ermitteln, ist nicht weiter schwer. Hier kann man ein einfache MAX(Spaltenname) verwenden. Was aber wenn man den Maximalwert über mehrere Spalten einer Tabelle hinweg ermitteln möchte?
SET NOCOUNT ON
IF OBJECT_ID('dbo.max_t') > 0
DROP TABLE dbo.max_t
GO
CREATE TABLE dbo.max_t
(
col1 int,
col2 int,
col3 int
)
INSERT INTO dbo.max_t(col1, col2, col3) VALUES(1,3,6)
INSERT INTO dbo.max_t(col1, col2, col3) VALUES(12,3,9)
INSERT INTO dbo.max_t(col1, col2, col3) VALUES(0,25,8)
INSERT INTO dbo.max_t(col1, col2, col3) VALUES(5,0,30)
SET NOCOUNT OFF
GO
SELECT
MAX(MaxSpaltenWert) AS MaxTabellenWert
FROM
(
SELECT MAX(col1) AS MaxSpaltenWert FROM dbo.max_t
UNION ALL
SELECT MAX(col2) AS MaxSpaltenWert FROM dbo.max_t
UNION ALL
SELECT MAX(col3) AS MaxSpaltenWert FROM dbo.max_t
) orig_t;
MaxTabellenWert
---------------
30
(1 row(s) affected)
Diese Lösung liefert auf jeden Fall ein korrektes Ergebnis.