Agrupar 2(duas) colunas

SQL Server

SQL

12/03/2018

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

Curtidas 0

Melhor post

Luiz Santos

Luiz Santos

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
GOSTEI 1

Mais Respostas

Alexandre

Alexandre

12/03/2018

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.
GOSTEI 0
Luiz Santos

Luiz Santos

12/03/2018

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
GOSTEI 1
POSTAR