Little modification of my function for use with 1 to 6 columns:
CREATE FUNCTION max_value
(
@Column1 numeric(10,2) = 0,
@Column2 numeric(10,2) = 0,
@Column3 numeric(10,2) = 0,
@Column4 numeric(10,2) = 0,
@Column5 numeric(10,2) = 0,
@Column6 numeric(10,2) = 0
)
RETURNS numeric(10,2)
BEGIN
DECLARE @work_table TABLE ( number numeric(10,2) )
INSERT INTO @work_table VALUES( @Column1 )
INSERT INTO @work_table VALUES( @Column2 )
INSERT INTO @work_table VALUES( @Column3 )
INSERT INTO @work_table VALUES( @Column4 )
INSERT INTO @work_table VALUES( @Column5 )
INSERT INTO @work_table VALUES( @Column6 )
RETURN ( SELECT MAX( number ) FROM @work_table )
END
-------------------------------
Using:
/* for 2 columns */
SELECT dbo.max_value( Column1, Column2 ) FROM ...
/* for 3 columns */
SELECT dbo.max_value( Column1, Column2, Column3 ) FROM ...
/* for 4 columns */
SELECT dbo.max_value( Column1, Column2, Column3, Column4 ) FROM ...
and so on ...
------------------------------------
But, if use don't want or can't use function, you must do this with CASE ... END statements:
/* for 3 columns */
SELECT
CASE WHEN column1 > column2 AND column1 > column3 THEN column1
WHEN column2 > column3 THEN column2
ELSE column3
END
/* for 4 columns */
SELECT
CASE WHEN column1 > column2 AND column1 > column3 AND column1 > column4 THEN column1
WHEN column2 > column3 AND column2 > column4 THEN column2
WHEN column3 > column4 THEN column3
ELSE column4
END
/* for 5 columns */
SELECT
CASE WHEN column1 > column2 AND column1 > column3 AND column1 > column4 AND column1 > column5 THEN column1
WHEN column2 > column3 AND column2 > column4 AND column2 > column5 THEN column2
WHEN column3 > column4 AND column3 > column5 THEN column3
WHEN column4 > column5 THEN column4
ELSE column5
END
and so on ...
Zhavic
---------------------------------------------------------------
In the 1960s you needed the power of two Comodore64s to get a rocket to the moon. Now you need a machine which is a vast number of times more powerful just to run the most popular GUI.