Usuário com melhor resposta
Case no SQL

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
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 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
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- Marcado como Resposta Moizés Cerqueira quinta-feira, 18 de março de 2010 16:09
-
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- Marcado como Resposta Moizés Cerqueira quinta-feira, 18 de março de 2010 16:09
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!!! -
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 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
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- Marcado como Resposta Moizés Cerqueira quinta-feira, 18 de março de 2010 16:09
-
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- Marcado como Resposta Moizés Cerqueira quinta-feira, 18 de março de 2010 16:09
-
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.
-