Fórum Select usando MAX() em duas colunas e retornar a ID as linhas. #546504
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
Curtir tópico
+ 0Post 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
Gostei + 1
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
Gostei + 0
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
Gostei + 0
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
Gostei + 0
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 ! :(
Gostei + 0
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
Gostei + 1
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
Gostei + 1
24/02/2016
Marcos P
Resolveu ?
Gostei + 0
01/03/2016
Célio Junior
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)