Fórum Agrupar 2(duas) colunas #591748
12/03/2018
0
Mais uma ajuda de vocês.
Tenho numa tabela SQL os campos, CAIXA, CONTRATO, SITUACAO, entre outros e preciso encontrar e agrupar SOMENTE as caixas onde
todos os contratos dentro delas estejam na mesma situação, ou seja:
CAIXA CONTRATO SITUAÇÃO
1 10 A
1 11 A
1 21 A
2 13 B
2 30 B
2 25 B
10 33 C
10 22 C
10 7 C
Se uma caixa contiver contratos com situações diferentes, ela não deve ser relacionada.
Valeu!
Alexandre
Curtir tópico
+ 0Post mais votado
14/03/2018
Confesso que demorei um pouco para entender o que você precisava.
Mas acho que isso te atende.
Basicamente, o segundo SELECT resolve o seu problema, o resto usei para montar um cenário para estudar.
Espero que te ajude.
IF OBJECT_ID(N'tempdb..#TESTE') IS NOT NULL DROP TABLE #TESTE CREATE TABLE #TESTE( CAIXA INT, CONTRATO INT, SITUACAO CHAR(2) ) INSERT INTO #TESTE VALUES (1, 10, 'A'), (1, 11, 'A'), (1, 21, 'D'), (2, 13, 'B'), (2, 30, 'B'), (2, 25, 'B'), (10, 33, 'C'), (10, 22, 'C'), (10, 7, 'C') SELECT CAIXA, COUNT(DISTINCT SITUACAO) FROM #TESTE GROUP BY CAIXA SELECT CAIXA, COUNT(DISTINCT SITUACAO) FROM #TESTE GROUP BY CAIXA HAVING COUNT(DISTINCT SITUACAO) = 1
Grande abraço
Luiz Santos
Gostei + 1
Mais Posts
19/03/2018
Alexandre
Agradeço mas não é isso não.
Imagine que tenho milhares de caixa e em cada uma delas dezenas de contratos.
Na maioria delas os contratos encontram-se em situações diferentes, mas em algumas delas todos os contratos estão na mesma situação.
Eu preciso encontrar somente essas em que todos os contratos dentro dela estão na mesma situação, seja lá qual situação for.
Gostei + 0
19/03/2018
Luiz Santos
A query abaixo te atende.
SELECT CAIXA, COUNT(DISTINCT SITUACAO) FROM #TESTE GROUP BY CAIXA HAVING COUNT(DISTINCT SITUACAO) = 1
Nela eu estou vendo por caixa, quantas situações diferentes tenho.
O HAVING COUNT(DISTINCT SITUACAO) = 1 vai me trazer apenas as caixas que tiverem a mesma situação em todos os contratos.
Só se tem alguma coisa na sua regra que eu não consegui entender.
Grande abs
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)