Usuário com melhor resposta
Ajuda em Select

Pergunta
-
Preciso fazer um select para retornar todos os produtos onde seus itens estão todos cotados, alguma sugestão em como fazer isso?
No caso abaixo esse grupo é inválido, para ser válido todos os itens tem que estar cotado = 1
Grupo Cotado 9 1 9 1 9 0 9 1 9 1
Respostas
-
Segue abaixo uma maneira. Neste exemplo, somente os registros do grupo 7 e 8 serão selecionados, pois os grupos 6 e 9 possuem itens não-cotados.
Create Table #Tabela (Grupo int, Cotado int) Insert Into #Tabela Values (6, 1), (6, 1), (6, 1), (6, 0), (6, 1), (7, 1), (7, 1), (7, 1), (7, 1), (7, 1), (8, 1), (8, 1), (8, 1), (8, 1), (8, 1), (9, 1), (9, 1), (9, 0), (9, 1), (9, 1) Select T.* From #Tabela T Left Join (Select * From #Tabela Where (Cotado = 0)) T2 on (T2.Grupo = T.Grupo) Where (T2.Grupo is Null)
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Editado Roberson Ferreira _Moderator quinta-feira, 23 de agosto de 2012 19:46
- Marcado como Resposta Pedro Ogm quinta-feira, 23 de agosto de 2012 19:55
-
E um outro modo seria com not Exists:
Select * From #Tabela T1 Where (not Exists(Select T2.Grupo From #Tabela T2 Where (T2.Grupo = T1.Grupo) and (T2.Cotado = 0)))
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta Pedro Ogm quinta-feira, 23 de agosto de 2012 20:51
Todas as Respostas
-
Segue abaixo uma maneira. Neste exemplo, somente os registros do grupo 7 e 8 serão selecionados, pois os grupos 6 e 9 possuem itens não-cotados.
Create Table #Tabela (Grupo int, Cotado int) Insert Into #Tabela Values (6, 1), (6, 1), (6, 1), (6, 0), (6, 1), (7, 1), (7, 1), (7, 1), (7, 1), (7, 1), (8, 1), (8, 1), (8, 1), (8, 1), (8, 1), (9, 1), (9, 1), (9, 0), (9, 1), (9, 1) Select T.* From #Tabela T Left Join (Select * From #Tabela Where (Cotado = 0)) T2 on (T2.Grupo = T.Grupo) Where (T2.Grupo is Null)
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Editado Roberson Ferreira _Moderator quinta-feira, 23 de agosto de 2012 19:46
- Marcado como Resposta Pedro Ogm quinta-feira, 23 de agosto de 2012 19:55
-
E um outro modo seria com not Exists:
Select * From #Tabela T1 Where (not Exists(Select T2.Grupo From #Tabela T2 Where (T2.Grupo = T1.Grupo) and (T2.Cotado = 0)))
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta Pedro Ogm quinta-feira, 23 de agosto de 2012 20:51