camurso_ Posted January 29, 2020 Share Posted January 29, 2020 Malta, há maneira, usando apenas um select de saber se uma linha tem os valores todos iguais, ou seja, suponhamos que tenho a seguinte tabela: Col1 Col2 Col3 Col4 2 2 3 2 Usando apenas um SELECT, consigo saber que o valor mudou na Col3? Não posso meter código, só posso usar instruções SQL "puro" Link to comment Share on other sites More sharing options...
blindamos Posted January 29, 2020 Share Posted January 29, 2020 Boas, Usando so select, tenta usar fazer UNPIVOT da tabela e sacar o minimo e o maximo valor. e.g. with col_data as ( select rownum as idrow, 2 as col1, 2 as col2, 3 as col3, 2 as col4 from dual union select rownum+1 as idrow, 2 as col1, 2 as col2, 2 as col3, 2 as col4 from dual union select rownum+2 as idrow, 2 as col1, 2 as col2, 2 as col3, 2 as col4 from dual union select rownum+3 as idrow, 5 as col1, 2 as col2, 2 as col3, 2 as col4 from dual ) select col_data.idrow, themax, themin from col_data join ( select idrow, max(Amount) as themax, min(Amount) as themin from col_data UNPIVOT ( Amount FOR AmountCol IN (col1, col2, col3, col4) ) unpvt group by idrow ) val_cols on col_data.idrow = val_cols.idrow and val_cols.themax <> val_cols.themin; Isto funciona. 1 Link to comment Share on other sites More sharing options...
camurso_ Posted January 29, 2020 Author Share Posted January 29, 2020 Muito obrigado pela sugestão. Entretanto, usei uma outra abordagem, que também funciona, usando cases para comparar os valores das colunas, um a um, com uma coluna, que usei como referência. Link to comment Share on other sites More sharing options...
doctore Posted January 29, 2020 Share Posted January 29, 2020 Também pensei em fazer com o unpivot, mas não bastará simplesmente algo assim: A query seguinte deve dar os registos que tem o mesmo valor nas colunas Col1 até Col4. SELECT * FROM TABELA AS T WHERE Col1 = Col2 AND Col2 = Col3 AND Col3 = Col4 Para encontrar os registos com diferenças podes simplesmente negar a cláusula WHERE ou trocar os ANDs por ORs 1 Link to comment Share on other sites More sharing options...
Mini0n Posted January 29, 2020 Share Posted January 29, 2020 Vinha cá por esta solução do doctore. Comparando directamente, não serve o teu propósito? Link to comment Share on other sites More sharing options...
blindamos Posted January 29, 2020 Share Posted January 29, 2020 Sim, caso seja só para comparar essas 4 colunas podes fazer com case ou fazer essas comparações na cláusula where. Eu é que estava a pensar que eram mais que 4 colunas, nesse caso unpivot é a melhor solução na minha opinião. 1 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now