Select max() em mais de uma coluna
Boa Tarde!
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
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
Curtidas 0
Respostas
Jair N.
08/12/2009
Boa Tarde seria ou poderia ser no caso simples:
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?
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?
GOSTEI 0
Benedito Batista
08/12/2009
Ola Jair
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...
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...
GOSTEI 0
Eduardo Silva.
08/12/2009
SELECT MAX(MAIOR_VALOR) AS MAIOR FROM
(
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!
(
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!
GOSTEI 0
Benedito Batista
08/12/2009
HUMMMM
Eduardo vou testar essa solução, se atender concluo a chamada, obrigado...
Eduardo vou testar essa solução, se atender concluo a chamada, obrigado...
GOSTEI 0
Emerson Nascimento
08/12/2009
a performance pode melhorar se houver um índice para cada coluna analisada.
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
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
GOSTEI 0