none
Ajuda em Select RRS feed

  • 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



    quinta-feira, 23 de agosto de 2012 19:31

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

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


    quinta-feira, 23 de agosto de 2012 19:45
    Moderador
  • 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.br

    Se 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
    quinta-feira, 23 de agosto de 2012 19:48
    Moderador

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

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


    quinta-feira, 23 de agosto de 2012 19:45
    Moderador
  • 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.br

    Se 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
    quinta-feira, 23 de agosto de 2012 19:48
    Moderador