Jair - Fórmula Postado 4 de Março de 2020 Tópicos Que Criei: 899 Tópicos/Dia: 0.14 Meu Conteúdo: 8.842 Conteúdo/Dia: 1.34 Reputação: 310 Pontos/Conquistas: 106.579 Conteúdo Resolvido: 0 Dias Ganho: 195 Status: Offline Idade: 52 Dispositivo: Windows Denunciar Compartilhar Postado 4 de Março de 2020 Vi que em algumas consultas, quando o cliente precisa saber as deficiências de uma pessoa, a sentença SQL está como o exemplo abaixo: SELECT A.NOME, DEFICIENCIA = CASE WHEN A.DEFICIENTEAUDITIVO = '1' AND A.DEFICIENTEFALA = '0' AND A.DEFICIENTEFISICO = '0' AND A.DEFICIENTEMENTAL = '0' AND A.DEFICIENTEVISUAL = '0' THEN 'Deficiente Auditivo' WHEN A.DEFICIENTEAUDITIVO = '0' AND A.DEFICIENTEFALA = '1' AND A.DEFICIENTEFISICO = '0' AND A.DEFICIENTEMENTAL = '0' AND A.DEFICIENTEVISUAL = '0' THEN 'Deficiente Fala' WHEN A.DEFICIENTEAUDITIVO = '0' AND A.DEFICIENTEFALA = '0' AND A.DEFICIENTEFISICO = '1' AND A.DEFICIENTEMENTAL = '0' AND A.DEFICIENTEVISUAL = '0' THEN 'Deficiente Físico' WHEN A.DEFICIENTEAUDITIVO = '0' AND A.DEFICIENTEFALA = '0' AND A.DEFICIENTEFISICO = '0' AND A.DEFICIENTEMENTAL = '1' AND A.DEFICIENTEVISUAL = '0' THEN 'Deficiente Mental' WHEN A.DEFICIENTEAUDITIVO = '0' AND A.DEFICIENTEFALA = '0' AND A.DEFICIENTEFISICO = '0' AND A.DEFICIENTEMENTAL = '0' AND A.DEFICIENTEVISUAL = '1' THEN 'Deficiente Visual' ELSE '' END FROM PPESSOA A (NOLOCK) A questão, é que neste modelo o retorno dos dados é totalmente incompleto, pois pode acontecer de, lá no cadastro, uma pessoa ter mais de uma deficiência. Assim, a consulta acima só traz a informação abaixo: NOME | DEFICIENCIA Maria | Física José | Física Pedro | Fala Pensando nisso, criamos a seguinte view: CREATE VIEW V_CONSTANT_DEFICIENCIA AS SELECT ID = 1, NOME = 'Física' UNION SELECT ID = 2, NOME = 'Auditiva' UNION SELECT ID = 3, NOME = 'Fala' UNION SELECT ID = 4, NOME = 'Visual' UNION SELECT ID = 5, NOME = 'Mental' UNION SELECT ID = 6, NOME = 'Intelectual' Assim, a nossa consulta poderá ser montada da seguinte forma: SELECT A.NOME, DEFICIENCIA = STUFF((SELECT ',' + X.NOME FROM V_CONSTANT_DEFICIENCIA X WHERE X.ID IN ( A.DEFICIENTEAUDITIVO, A.DEFICIENTEFALA, A.DEFICIENTEFISICO, A.DEFICIENTEINTELECTUAL, A.DEFICIENTEMENTAL) FOR XML PATH('')),1,1,'') FROM PPESSOA A (NOLOCK) E o resultado será: NOME | DEFICIENCIA Maria | Física, Auditiva José | Física Pedro | Fala, Auditiva, Visual Espero que tenha sido útil! Ilano Caldas - MDI Soluções Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jair - Fórmula Postado 4 de Março de 2020 Tópicos Que Criei: 899 Tópicos/Dia: 0.14 Meu Conteúdo: 8.842 Conteúdo/Dia: 1.34 Reputação: 310 Pontos/Conquistas: 106.579 Conteúdo Resolvido: 0 Dias Ganho: 195 Status: Offline Idade: 52 Dispositivo: Windows Autor Denunciar Compartilhar Postado 4 de Março de 2020 @ilanocf Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Participe da conversa
Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.