Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 546515
            [titulo] => Select usando MAX() em duas colunas e retornar a ID as linhas.
            [dataCadastro] => DateTime Object
                (
                    [date] => 2016-02-22 17:49:38
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 378439
            [status] => A
            [isExample] => 
            [NomeUsuario] => Marcos P
            [Apelido] => 
            [Foto] => 378439_20140801115452.png
            [Conteudo] => Explica melhor...

Qual a estrutura da tabela ?

Porque você "tem" de usar o MAX() ?

Qual o critério para identificar o contador A e o contador B ?

Eles são fixos ( sempre duas ocorrências ) ou a quantidade de "contadores" pode variar ?

Quanto mais detalhado o problema, mais fácil fica te ajudar... ) )

Select usando MAX() em duas colunas e retornar a ID as linhas.

Célio Junior
   - 22 fev 2016

Boa tarde galera.
Gostaria da ajuda de voces, estou tentando voltar o ID do seguinte caso.

Tabela A
ID CONTADOR.A CONTADOR.B
1 90 30
2 1 90
3 100 1

preciso retornar da seguinte maneira :
CONTADOR.A ID.A CONTADOR.B ID.B
100 3 90 2
Tem que usar alias e MAX(), mas estou apanhando muito para a funcao MAX() alguem poderia me ajudar por favor ?

Post mais votado

Marcos P
   - 22 fev 2016

Explica melhor...

Qual a estrutura da tabela ?

Porque você "tem" de usar o MAX() ?

Qual o critério para identificar o contador A e o contador B ?

Eles são fixos ( sempre duas ocorrências ) ou a quantidade de "contadores" pode variar ?

Quanto mais detalhado o problema, mais fácil fica te ajudar...

Célio Junior
   - 22 fev 2016

#Código

SELECT DISTINCT
	TB02021_CODIGO,
	MAX(TB02021_CONTPB) OVER (PARTITION BY TB02021_CODIGO) as CONTPB,
	MAX(TB02021_CONTCOLOR) OVER (PARTITION BY TB02021_CODIGO ORDER BY TB02021_CODIGO DESC) AS CONTCOLOR
	--TB02021_CODIGO AS Q, 
	--TB02021_CODIGO AS T
FROM TB02021 WHERE TB02021_NUMSERIE = 'QVQ3810616' 
group by TB02021_CODIGO


nao funciona! aaaaa minha cabeca vai exploridr kkkkkkkkk

Célio Junior
   - 22 fev 2016

seguinte brother tenho duas colunas que com contadores preciso da id das aonde os contadores sao os mais altos ... tipo assim

coluna contador A teve 100 e coluna contador B teve 1000 uma e id 3 e a outra id4

tentei usar self join, mas mesmo assim falhei !!!

#Código


SELECT
  tb02021.*
FROM
  (SELECT TB02021_CODIGO, MAX(TB02021_CONTPB) AS max_CONTPB FROM TB02021 GROUP BY TB02021_CODIGO) AS CONTPB
INNER JOIN
  (SELECT TB02021_CODIGO, TB02021_CONTPB, MAX(TB02021_CONTCOLOR) AS max_CONTCOLOR FROM TB02021 GROUP BY TB02021_CODIGO, TB02021_CONTPB) AS CONTCOLOR
    ON  CONTCOLOR.TB02021_CODIGO = CONTPB.TB02021_CODIGO
    AND CONTCOLOR.TB02021_CODIGO = CONTPB.max_CONTPB
INNER JOIN
  TB02021
    ON  TB02021.TB02021_CODIGO = CONTCOLOR.TB02021_CODIGO
    AND TB02021.TB02021_CONTPB = CONTCOLOR.TB02021_CONTPB
    AND TB02021.TB02021_CONTCOLOR  = CONTCOLOR.max_CONTCOLOR
   

Marcos P
   - 22 fev 2016

Adapte e teste, a partir de :

#Código

select max(tab.contador_colunaA) as maxA, cont1.ID as idA,
       max(tab.contador_colunaB) as maxB, cont2.ID as idB
from tabela tabela_principal tab inner join tabela_contador cont1 on (tab.contador_colunaA = cont1.ID)
                                 inner join tabela_contador cont2 on (tab.contador_colunaB = cont2.ID)
group by cont1.ID, cont2.ID

Célio Junior
   - 23 fev 2016

#Código

select 
	max(tab.TB02021_CONTPB) 
		as maxA, 
	cont1.TB02021_CODIGO 
		as idA,
	max(tab.TB02021_CONTCOLOR)
		as maxB, 
	cont2.TB02021_CODIGO 
		as idB
from 
	TB02021 tab 
		inner join 
			TB02021 cont1 
				on 
					(tab.TB02021_CODIGO = cont1.TB02021_CODIGO)
		        inner join 
			TB02021 cont2
		on 
	(tab.TB02021_CODIGO = cont2.TB02021_CODIGO)
WHERE 
	tab.TB02021_NUMSERIE = '79G1TZ3'
group by 
	cont1.TB02021_CODIGO, cont2.TB02021_CODIGO


Esta gerando mais de uma linha :(((

preciso de apenas uma linha ja que eu quero apenas os valores mais altos de PB e COLOR ! :(

Marcos P
   - 23 fev 2016

Você está fazendo tudo na mesma tabela ?

#Código

from  TB02021 tab  inner join  TB02021 cont1 on...
                   inner join  TB02021 cont2 on...

Não existe um erro de conceito nisso ?

Tente assim...

#Código
declare @max_PB, @max_COLOR integer

set @max_PB    = (select max(tab.TB02021_CONTPB) from TB02021)
set @max_COLOR = (select max(tab.TB02021_CONTCOLOR) from TB02021)

select ID, @max_PB as Max from TB02021 where CONTPB = @max_PB
UNION ALL
select ID, @max_PCOLOR as Max from TB02021 where CONTCOLOR = @max_COLOR

Raylan
|
MVP
Pontos: 690
    23 fev 2016

AJUSTE E TESTE E VERIFIQUE SE FUNCIONA:
#Código

SELECT
(select ID FROM TABELA ORDER BY CONTADOR_A DESC LIMIT 1) AS ID_A,
(select CONTADOR_A FROM TABELA ORDER BY CONTADOR_A DESC LIMIT 1) AS CONTADOR_A,
(select ID FROM TABELA ORDER BY CONTADOR_B DESC LIMIT 1) AS ID_B,
(select CONTADOR_B FROM TABELA ORDER BY CONTADOR_B DESC LIMIT 1) AS CONTADOR_B
FROM TABELA

Marcos P
   - 24 fev 2016

E aí ?

Resolveu ?

Célio Junior
   - 01 mar 2016

VOu tentar estou no meio de um projeto aqui assim que terminar eu tento desse jeito ai