Jump to content
Fórum Script Brasil
  • 0

Como utilizar as funções PIVOT/CROSS APPLY com INNER JOIN?


MARCOS REZENDE

Question

Um bom dia a todos os colegas do fórum.

Tenho as seguintes tabelas:

hwF3v.png

PYUlY.png

DFGOY.png

Necessito criar uma consulta que totalize por DATA, CODIGO_FUNCI, CODIGO_OPE e HORA. sendo o campo HORA separado por horários(07:00 as 07:59, 08:00 as 08:59, 09:00 as 09:59, 10:00 as 10:59, e assim por diante. A consulta ficaria mais ou menos assim:

GotTh.png

Alguém poderia me auxiliar utilizando as funções PIVOT ou CROSS-APPLY juntamente com INNER JOIN?

Desde já eu agradeço.

 

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0
Em 05/07/2022 em 08:45, MARCOS REZENDE disse:

Um bom dia a todos os colegas do fórum.

Tenho as seguintes tabelas:

hwF3v.png

PYUlY.png

DFGOY.png

Necessito criar uma consulta que totalize por DATA, CODIGO_FUNCI, CODIGO_OPE e HORA. sendo o campo HORA separado por horários(07:00 as 07:59, 08:00 as 08:59, 09:00 as 09:59, 10:00 as 10:59, e assim por diante. A consulta ficaria mais ou menos assim:

GotTh.png

Alguém poderia me auxiliar utilizando as funções PIVOT ou CROSS-APPLY juntamente com INNER JOIN?

Desde já eu agradeço.

 

uma forma de utilizar o pivot seria esta:
 

;WITH TABELA
     AS (SELECT PR.DATA,
                F.CODIGO_FUNCI,
                F.NOME,
                OP.DESCRICAO,
                PR.QTD,
                Datepart(HH, PR.HORA) AS HORA
         FROM   TABELA_PR PR
                INNER JOIN TABELA_OP OP
                        ON PR.CODIGO_OP = OP.CODIGO_OP
                INNER JOIN FUNCIONARIOS F
                        ON PR.CODIGO_FUNCI = F.CODIGO_FUNCI
         GROUP  BY PR.DATA,
                   F.CODIGO_FUNCI,
                   F.NOME,
                   OP.DESCRICAO,
                   PR.QTD,
                   Datepart(HH, PR.HORA))
SELECT DATA,
       CODIGO_FUNCI,
       NOME,
       DESCRICAO,
       Isnull([7], 0)  AS [7h],
       Isnull([8], 0)  AS [8h],
       Isnull([9], 0)  AS [9h],
       Isnull([10], 0) AS [10h],
       Isnull([11], 0) AS [11h],
       Isnull([12], 0) AS [12h]
FROM   TABELA
       PIVOT(Sum(QTD)
            FOR hora IN([7],
                        [8],
                        [9],
                        [10],
                        [11],
                        [12])) AS pvt
ORDER  BY 1,
          2 

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
Answer this question...

×   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.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.9k
×
×
  • Create New...