Select max() em mais de uma coluna
08/12/2009
0
Poderiam me ajudar, estou com duvidas no comando MAX(), existe alguma maneira de de conseguir o valor maximo entre os dados de 2 colunas ou mais???
exemplo:
tabela
col1 col2 col3 col4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Tipo assim
Select max(col1,col2,col3,col4) as maior
from tabela
O resultado seria maior=16
Benedito Batista
Posts
09/12/2009
Jair N.
SELECT CASE WHEN (MAXCOL1 > MAXCOL2) AND (MAXCOL2 > MAXCOL3) AND (MAXCOL3 > MAXCOL4) THEN MAXCOL1
WHEN (MAXCOL2 > MAXCOL3) AND (MAXCOL3 > MAXCOL4) THEN MAXCOL2
WHEN (MAXCOL3 > MAXCOL4) THEN MAXCOL3
ELSE MAXCOL4 END AS MAXCOL
FROM (SELECT MAX(COL1) AS MAXCOL1
, MAX(COL2) AS MAXCOL2
, MAX(COL3) AS MAXCOL3
, MAX(COL4)AS MAXCOL4
FROM (SELECT 1 AS COL1 , 2 AS COL2, 3 AS COL3, 4 AS COL4
UNION
SELECT 5, 6, 7, 8
UNION
SELECT 9, 10, 11, 12
UNION
SELECT 13, 14, 15,16
) MY_MAX
) MY_SUM
é isso?
09/12/2009
Benedito Batista
Essa solução funciona, mas eu queria algo mais generico e enxuto, achei um comando chamado GREATEST(), mas no sql server não funciona...
Preciso desse comando para usar como parte de um sql grande, valew a ajuda, vamos tentando...
09/12/2009
Eduardo Silva.
(
SELECT TABELA.COL1 AS MAIOR_VALOR FROM TABELA
UNION ALL
SELECT TABELA.COL2 FROM TABELA
UNION ALL
SELECT TABELA.COL3 FROM TABELA
UNION ALL
SELECT TABELA.COL4 FROM TABELA
) AS MAIOR Grande abraço!
09/12/2009
Benedito Batista
Eduardo vou testar essa solução, se atender concluo a chamada, obrigado...
18/12/2009
Emerson Nascimento
seguindo a resposta dada anteriormente, veja se melhora trazer os valores já consolidados...
SELECT MAX(MAIOR_VALOR) AS MAIOR
FROM
(
SELECT MAX(COL1) AS MAIOR_VALOR FROM TABELA
UNION ALL
SELECT MAX(COL2) FROM TABELA
UNION ALL
SELECT MAX(COL3) FROM TABELA
UNION ALL
SELECT MAX(COL4) FROM TABELA
UNION ALL
SELECT MAX(COL5) FROM TABELA
[etc...]
) AS MAIOR
Clique aqui para fazer login e interagir na Comunidade :)