Ir para conteúdo
Fórum Script Brasil
  • 0

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


MARCOS REZENDE

Pergunta

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 para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...