Agrupar 2(duas) colunas

12/03/2018

0

Olá!!

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

Alexandre

Responder

Post mais votado

14/03/2018

Bom dia Alexandre.

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

Luiz Santos
Responder

Mais Posts

19/03/2018

Alexandre

Luiz Fernando, bom dia!

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.
Responder

19/03/2018

Luiz Santos

Então Alexandre.
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
Responder

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

Aceitar