none
'fazer uma verificação dentro de um select' RRS feed

  • Pergunta

  • glr é o seguinte supondo que eu tenho a seguinte tabela:

    Tbl_funcionarios

    codigo   nome    obs01    obs02  
     1         fulano    blabla    blabla 
     2         fulano    blabla    blabla 
     3         fulano    blabla    blabla 
     4         fulano    NULL     blabla 
     5         zé          NULL     blabla
     6         zé          NULL     blabla
     7         zé          NULL     blabla
     8         zé          NULL     blabla  
     9         joao       blabla    blabla
     10       joao       blabla    blabla
     11       joao       blabla    blabla
     12       joao       blabla    blabla 
     13       cido       NULL      blabla  
     14       cido       NULL      NULL
     15       cido       NULL      NULL   
     16       cido       NULL      blabla  
     17       mané     NULL      blabla
     18       mané     NULL      blabla
     19       mané     blabla     blabla
     20       mané     NULL      blabla

    ...

    preciso de um select que me trará SOMENTE OS QUE TEM TDS AS LINHA OBS01 = NULL
    QUE NO CASO SERIA SÓ O ZÉ E O CIDO.
    reparem que tanto o fulano e o mané tbm possuem linhas com o campo obs01 em branco
    porem só o zé e o cido tem todas as linhas com o campo obs01 em branco.

    vlw glr


    terça-feira, 9 de outubro de 2012 18:56

Respostas

  • Camillo, tente algo +ou- assim:

    select
      *
        from Tbl_funcionarios
    where obs01 is null
    and nome not in (select nome from Tbl_funcionarios where obs01 is not null)


    Alexandre Matayosi Conde Mauricio. 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.

    terça-feira, 9 de outubro de 2012 19:02

Todas as Respostas

  • Camillo, tente algo +ou- assim:

    select
      *
        from Tbl_funcionarios
    where obs01 is null
    and nome not in (select nome from Tbl_funcionarios where obs01 is not null)


    Alexandre Matayosi Conde Mauricio. 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.

    terça-feira, 9 de outubro de 2012 19:02
  • Recomendo usar o not Exists, por ser mais performático.

    Exemplo:

    Declare @Tabela Table (codigo int, nome varchar(10), obs01 varchar(10), obs02 varchar(10))
    Insert Into @Tabela Values
    (1, 'fulano', 'blabla','blabla'),
    (2, 'fulano', 'blabla','blabla'),
    (3, 'fulano', 'blabla','blabla'),
    (4, 'fulano', NULL, 'blabla'),
    (5, 'zé', NULL, 'blabla'),
    (6, 'zé', NULL, 'blabla'),
    (7, 'zé', NULL, 'blabla'),
    (8, 'zé', NULL, 'blabla'), 
    (9, 'joao', 'blabla', 'blabla'),
    (10, 'joao', 'blabla', 'blabla'),
    (11, 'joao', 'blabla', 'blabla'),
    (12, 'joao', 'blabla', 'blabla'),
    (13, 'cido', NULL, 'blabla'),
    (14, 'cido', NULL, NULL),
    (15, 'cido', NULL, NULL),
    (16, 'cido', NULL, 'blabla'),
    (17, 'mané', NULL, 'blabla'),
    (18, 'mané', NULL, 'blabla'),
    (19, 'mané', 'blabla', 'blabla'),
    (20, 'mané', NULL, 'blabla')
    
    Select Distinct T.nome From @Tabela T Where
    (not Exists(Select Codigo From @Tabela T2 Where (T2.obs01 is not Null) and (T2.nome = T.nome)))


    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.

    terça-feira, 9 de outubro de 2012 19:24
    Moderador
  • Vlw Alexandre é isso mesmo que eu preciso.

    terça-feira, 9 de outubro de 2012 19:27