none
Case no SQL RRS feed

  • Pergunta

  • Pessoal preciso fazer uma claussula no SQL que seja a seguinte caso a coluna RG for vazia ou nulla a coluna RG vai ser igual a coluna RG_Responsavel.

     SELECT DISTINCT US.SiteID, US.ClassificationID, US.UserID, US.GroupID, US.cod_escola, US.cod_aluno, 
     US.nome, US.cod_serie, US.cod_turma, 
     B.carteira_identidade_numero AS RG_Resp,CASE US.carteira_identidade_numero '' OR null US.carteira_identidade_numero = RG_Resp
      FROM School.v_BankSlip AS B  
      INNER JOIN School.v_UserStudent AS US ON B.cod_escola = US.cod_escola AND B.cod_aluno = US.cod_aluno  
      WHERE US.SiteID =2 AND  US.GroupID = 11 AND US.cod_serie = 3    AND US.cod_turma = 'P1'
      ORDER BY US.nome ASC
    quinta-feira, 18 de março de 2010 14:19

Respostas

  • Moizés,

    Utilize a função IsNull para verificar se o campo esta Nulo.

    Veja este exemplo:

    SELECT DISTINCT US.SiteID, US.ClassificationID, US.UserID, US.GroupID, US.cod_escola, US.cod_aluno,
    US.nome, US.cod_serie, US.cod_turma,
    B.carteira_identidade_numero AS RG_Resp, IsNull(US.carteira_identidade_numero, RG_Resp)
      FROM School.v_BankSlip AS
      INNER JOIN School.v_UserStudent AS US ON B.cod_escola = US.cod_escola AND B.cod_aluno = US.cod_aluno 
      WHERE US.SiteID =2 AND  US.GroupID = 11 AND US.cod_serie = 3    AND US.cod_turma = 'P1'
      ORDER BY US.nome ASC


    Agora para funcionar corretamente você deveria criar um constraint para definir se caso o usuário na informe nada nesta coluna ela deveria ficar como Null.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quinta-feira, 18 de março de 2010 14:27
  • segue mais um exemplo utilizando a função isnull com nullif :

     SELECT DISTINCT 
        US.SiteID, US.ClassificationID, US.UserID, US.GroupID, US.cod_escola, US.cod_aluno, 
        US.nome, US.cod_serie, US.cod_turma, 
        B.carteira_identidade_numero AS RG_Resp,
        ISNULL(NULLIF(US.carteira_identidade_numero,''),B.carteira_identidade_numero) as RG
    FROM 
             School.v_BankSlip AS B  
    INNER JOIN School.v_UserStudent AS US ON B.cod_escola = US.cod_escola AND B.cod_aluno = US.cod_aluno  
    WHERE 
        US.SiteID =2 
        AND  US.GroupID = 11 
        AND US.cod_serie = 3    
        AND US.cod_turma = 'P1'
    ORDER BY US.nome ASC
    

    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    quinta-feira, 18 de março de 2010 14:29

Todas as Respostas

  • Moizes teanta assim:

    SELECT DISTINCT US.SiteID, US.ClassificationID, US.UserID, US.GroupID, US.cod_escola, US.cod_aluno, 
     US.nome, US.cod_serie, US.cod_turma, 
     B.carteira_identidade_numero AS RG_Resp,CASE when len(US.carteira_identidade_numero)=0 then B.carteira_identidade_numero else US.carteira_identidade_numero end 
       FROM School.v_BankSlip AS B  
      INNER JOIN School.v_UserStudent AS US ON B.cod_escola = US.cod_escola AND B.cod_aluno = US.cod_aluno  
      WHERE US.SiteID =2 AND  US.GroupID = 11 AND US.cod_serie = 3    AND US.cod_turma = 'P1'
      ORDER BY US.nome ASC
    



    att.
    Marcelo Fernadnes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    quinta-feira, 18 de março de 2010 14:24
  • Moizés,

    Utilize a função IsNull para verificar se o campo esta Nulo.

    Veja este exemplo:

    SELECT DISTINCT US.SiteID, US.ClassificationID, US.UserID, US.GroupID, US.cod_escola, US.cod_aluno,
    US.nome, US.cod_serie, US.cod_turma,
    B.carteira_identidade_numero AS RG_Resp, IsNull(US.carteira_identidade_numero, RG_Resp)
      FROM School.v_BankSlip AS
      INNER JOIN School.v_UserStudent AS US ON B.cod_escola = US.cod_escola AND B.cod_aluno = US.cod_aluno 
      WHERE US.SiteID =2 AND  US.GroupID = 11 AND US.cod_serie = 3    AND US.cod_turma = 'P1'
      ORDER BY US.nome ASC


    Agora para funcionar corretamente você deveria criar um constraint para definir se caso o usuário na informe nada nesta coluna ela deveria ficar como Null.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quinta-feira, 18 de março de 2010 14:27
  • segue mais um exemplo utilizando a função isnull com nullif :

     SELECT DISTINCT 
        US.SiteID, US.ClassificationID, US.UserID, US.GroupID, US.cod_escola, US.cod_aluno, 
        US.nome, US.cod_serie, US.cod_turma, 
        B.carteira_identidade_numero AS RG_Resp,
        ISNULL(NULLIF(US.carteira_identidade_numero,''),B.carteira_identidade_numero) as RG
    FROM 
             School.v_BankSlip AS B  
    INNER JOIN School.v_UserStudent AS US ON B.cod_escola = US.cod_escola AND B.cod_aluno = US.cod_aluno  
    WHERE 
        US.SiteID =2 
        AND  US.GroupID = 11 
        AND US.cod_serie = 3    
        AND US.cod_turma = 'P1'
    ORDER BY US.nome ASC
    

    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    quinta-feira, 18 de março de 2010 14:29
  • Valeu Leonardo a sua solução foi a que se enquadrou melhor, por no banco além de null também tem branco, precisava de outra solução, neste memso caso quando p Rg do aluno fosse branco ou null ele trouxesse o do pai mas add uma string 'resp' na frente do numero do Rg.
    quinta-feira, 18 de março de 2010 14:46
  • Moizés, valeu pelo retorno.
    já dei outra sugestão no novo tópico.
    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    quinta-feira, 18 de março de 2010 15:01