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

22/02/2016

0

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 ?
Célio Junior

Célio Junior

Responder

Post mais votado

22/02/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...

Marcos P

Marcos P
Responder

Mais Posts

22/02/2016

Célio Junior

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
Responder

22/02/2016

Célio Junior

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 !!!



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
   
Responder

22/02/2016

Marcos P

Adapte e teste, a partir de :

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
Responder

23/02/2016

Célio Junior

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 ! :(
Responder

23/02/2016

Marcos P

Você está fazendo tudo na mesma tabela ?

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

Não existe um erro de conceito nisso ?

Tente assim...

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
Responder

23/02/2016

Raylan Zibel

AJUSTE E TESTE E VERIFIQUE SE FUNCIONA:
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
Responder

24/02/2016

Marcos P

E aí ?

Resolveu ?
Responder

01/03/2016

Célio Junior

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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar