Jump to content
Matheus Garcez

Quebra de linha em consulta SQL

Recommended Posts

Bom dia,
 

Necessito realizar uma quebra de linha na consulta a seguir: 

 

SELECT PFUNC.NOME AS NOMETITULAR,
       PPESSOA.CPF AS CPFTITULAR,
       PPESSOA.DTNASCIMENTO DATANASCTITULAR,
       CASE PPESSOA.SEXO
         WHEN 'M' THEN 'Masculino'
         WHEN 'F' THEN 'Feminino'
       END AS GENEROTITULAR,
              CASE
         WHEN PFDEPEND.NRODEPEND <> NULL THEN 0
         ELSE 1
       END Titular,
       PPESSOA.CIDADE AS CIDADETITULAR,
       
       /*+ Char(13) + Char(10) + */
       PFDEPEND.NOME AS NOMEDEPENDENTE,
       PFDEPEND.CPF AS CPFDEPENDENTE,
       PFDEPEND.DTNASCIMENTO AS DATANASCDEPENDENTE,
       /*Datediff(YEAR, PFDEPEND.DTNASCIMENTO, Getdate()),*/
       CASE PFDEPEND.SEXO
         WHEN 'M' THEN 'Masculino'
         WHEN 'F' THEN 'Feminino'
       END AS GENERODEPENDENTE,
       CASE
         WHEN PPESSOA.CPF <> NULL THEN 1
         ELSE 0
       END Titular,
       PPESSOA.CPF AS CPFTITULAR,
       PPESSOA.CIDADE AS CIDADEDEPENDENTE
FROM   PFUNC
       INNER JOIN PFDEPEND
               ON PFDEPEND.CODCOLIGADA = PFUNC.CODCOLIGADA
                  AND PFDEPEND.CHAPA = PFUNC.CHAPA
       JOIN PCODPARENT
         ON PCODPARENT.CODCLIENTE = PFDEPEND.GRAUPARENTESCO
       JOIN PPESSOA (NOLOCK)
         ON ( PFUNC.CODPESSOA = PPESSOA.CODIGO )
WHERE  PFUNC.CODSITUACAO <> 'D'
       AND PFUNC.CODCOLIGADA <> '3'
       AND ( ( Datediff(YEAR, PFDEPEND.DTNASCIMENTO, Getdate()) < 18 )
              OR ( Datediff(YEAR, PFDEPEND.DTNASCIMENTO, Getdate()) >= 18
                   AND PFDEPEND.CPF != 'NULL' ) )
       AND PFDEPEND.GRAUPARENTESCO IN ( '1', '5', 'C', 'D' )
       AND PFDEPEND.DTNASCIMENTO <> '01/01/1901'
       AND PFDEPEND.DTNASCIMENTO <> '01/01/1900'
       AND PFDEPEND.NOME NOT IN(SELECT DISTINCT PFDEPEND.NOME
                                FROM   PFDEPEND
                                       INNER JOIN PPESSOA
                                               ON PFDEPEND.CPF = PPESSOA.CPF
                                       INNER JOIN PFUNC
                                               ON PFUNC.CODCOLIGADA = PFDEPEND.CODCOLIGADA
                                                  AND PFUNC.CHAPA = PFDEPEND.CHAPA
                                WHERE  PFDEPEND.CPF = PPESSOA.CPF
                                       AND PFUNC.CODSITUACAO <> 'D'
                                       AND PFUNC.CODCOLIGADA <> 3)
ORDER  BY PFDEPEND.CODCOLIGADA,
          PFDEPEND.CHAPA


Aonde eu necessito separara as informações do Titular das do Dependente, sendo que atualmente um vem ao lado do outro e necessito que as informações do Dependente venham logo abaixo das informações de seu Titular.


As informações estão vindo assim:
NOMETITULAR    CPFTITULAR    DATANASCTITULAR    GENEROTITULAR    TITULAR1    CIDADETITULAR    NOMEDEPENDENTE    CPFDEPENDENTE    DATANASCDEPENDENTE    GENERODEPENDENTE    CPFTITULAR1    TITULAR    CIDADEDEPENDENTE

As informações devem vir assim:

NOMETITULAR    CPFTITULAR    DATANASCTITULAR    GENEROTITULAR    TITULAR1    CIDADETITULAR    

NOMEDEPENDENTE    CPFDEPENDENTE    DATANASCDEPENDENTE    GENERODEPENDENTE    CPFTITULAR1    TITULAR    CIDADEDEPENDENTE

Share this post


Link to post
Share on other sites

@Matheus Garcez, Boa tarde! 

No result set (resultado da consulta) não tem como fazer isso, caso precise dessa informação em um único result set, podes por exemplo utilizar essa query como base:

;WITH TAB_DADOS
AS
(
    SELECT 
          F.CODCOLIGADA
         ,F.CHAPA
         ,0 AS 'NRO'
         ,F.NOME
         ,P.CPF
         ,P.DTNASCIMENTO
    FROM DBO.PFUNC F
    JOIN DBO.PPESSOA P ON (F.CODPESSOA = P.CODIGO)
    WHERE F.CODCOLIGADA = 1 

    UNION ALL 

    SELECT 
          F.CODCOLIGADA
         ,F.CHAPA
         ,P.NRODEPEND AS 'NRO'
         ,P.NOME
         ,P.CPF
         ,P.DTNASCIMENTO
    FROM DBO.PFUNC F
    JOIN DBO.PFDEPEND P ON (F.CODCOLIGADA = P.CODCOLIGADA AND F.CHAPA = P.CHAPA)
    WHERE F.CODCOLIGADA = 1 
)
SELECT * 
FROM TAB_DADOS D
ORDER BY D.CODCOLIGADA, D.CHAPA , D.NRO

Caso queiras utilizar no gerador do relatório dai é um pouco diferente! 

Espero ter ajudado!

Abraços.

Share this post


Link to post
Share on other sites

Boa tarde!

 

Quebrar a linha ou agrupar? Põe um group by no fim da sentença, creio que atenda o que você precisa.

Share this post


Link to post
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.