Select usando MAX() em duas colunas e retornar a ID as linhas.
22/02/2016
0
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
Post mais votado
22/02/2016
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
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
22/02/2016
Célio Junior
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
22/02/2016
Marcos P
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
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 ! :(
23/02/2016
Marcos P
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
23/02/2016
Raylan Zibel
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
01/03/2016
Célio Junior
Clique aqui para fazer login e interagir na Comunidade :)