Jump to content
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×

Deficiencias do funcionário


Recommended Posts


  • Topic Count:  903
  • Topics Per Day:  0.14
  • Content Count:  8,862
  • Content Per Day:  1.34
  • Reputation:   312
  • Achievement Points:  106,744
  • Solved Content:  0
  • Days Won:  197
  • Status:  Offline
  • Age:  52
  • Device:  Windows

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

Link to comment
Share on other sites


  • Topic Count:  903
  • Topics Per Day:  0.14
  • Content Count:  8,862
  • Content Per Day:  1.34
  • Reputation:   312
  • Achievement Points:  106,744
  • Solved Content:  0
  • Days Won:  197
  • Status:  Offline
  • Age:  52
  • Device:  Windows

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.