Pivoteamento DINÂMICO SÓ COM SELECT (PIVOT)

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 ธ.ค. 2024

ความคิดเห็น • 58

  • @pcfava
    @pcfava หลายเดือนก่อน

    Já tinha visto este vídeo há um tempo atrás e hoje precisei de uma solução assim e revi o vídeo, serviu como uma luva! Obrigado mestre!

    • @mqfs
      @mqfs  2 วันที่ผ่านมา +1

      Opa, valeeeu!! 💪🏻💪🏻💪🏻
      Fico feliz que tenha ajudado!

  • @LucasOliveira-lq1pe
    @LucasOliveira-lq1pe 3 ปีที่แล้ว +2

    Parabéns pela lógica, Edson. é uma ótima forma de fazer o PIVOT.
    O pessoal está se perguntando se a cada novo funcionário precisa inserir na sql. Na verdade este é o dinamismo dessa lógica, se o funcionário realizar ao menos venda no período vai ser listado nas colunas, pois a fonte de dados leva em consideração todos os funcionários com vendas no período. Mesmo que seja funcionário novo, basta ter vendas e será criada uma coluna para o mesmo.

    • @mqfs
      @mqfs  3 ปีที่แล้ว +1

      Exatamente, tiveram mais pessoas perguntando, acho que não deixei bem explicado no fim do vídeo como fazer.. Então, vou preparar um vídeo aplicando esse conceito em delphi e mostrando o dinamismo...

  • @rjsfrajola
    @rjsfrajola 2 ปีที่แล้ว +1

    Parabéns excelente explicação passo a passo com calma. Obrigadão.

  • @josemartavares7047
    @josemartavares7047 3 ปีที่แล้ว +2

    Santa criatividade!!! Assim não da pra competir, rsrsrs

    • @mqfs
      @mqfs  3 ปีที่แล้ว

      kkkkkkk

  • @fmatiello
    @fmatiello ปีที่แล้ว

    Sensacional...👏👏👏👏
    Tirou leite de pedra😱👏👏👏

  • @jailsoncarneiro4936
    @jailsoncarneiro4936 ปีที่แล้ว +1

    Show de Bola!

    • @mqfs
      @mqfs  ปีที่แล้ว

      Valeeeu!!

    • @jailsoncarneiro4936
      @jailsoncarneiro4936 ปีที่แล้ว

      @@mqfs Esse Vídeo me inspirou muito na confecção de um pivoteamento onde, no meu caso, as linhas seriam equivalentes aos funcionarios e as colunas são os meses. Muito obrigado ao grande mestre, seu trabalho é simplesmente incrível. Por favor, nunca pare!!!

  • @OrneiPSilva
    @OrneiPSilva 3 ปีที่แล้ว +1

    show muito bom. parabéns Esdon

    • @mqfs
      @mqfs  3 ปีที่แล้ว

      Valeeeu!! 💪🏻💪🏻💪🏻

  • @MrJorgelf
    @MrJorgelf ปีที่แล้ว +1

    Muito bom. Parabéns e obrigado por compartilhar. Uma dúvida: em sistemas em que a função "List" não está presente tem alguma alternativa? (bigquery, AWS,...).

  • @genilsoncosta8892
    @genilsoncosta8892 3 ปีที่แล้ว +1

    Show de bola, excelente Lógica muito top!

    • @mqfs
      @mqfs  3 ปีที่แล้ว

      Valeeeu!! 💪🏻💪🏻💪🏻

  • @urmenyi
    @urmenyi 3 ปีที่แล้ว +1

    Simplesmente formidável. Obrigado e parabéns

    • @mqfs
      @mqfs  3 ปีที่แล้ว

      Valeeeu!! 💪🏻💪🏻💪🏻

  • @alexferrazoliver
    @alexferrazoliver 2 ปีที่แล้ว +2

    Sensacional, bem parecido com os que faço no Mysql, ultimamente eu garrei apenas em um Pivot que deveria me trazer a frequência dos alunos por dia do mês onde eu agrupo isso um relatório por mês, até aí tudo ok, o problema acontece, quando o professor dá mais de uma aula por dia na mesma disciplina, pois eu transformo o resultado da seguinte forma, se for presença trago *, se for ausência trago F e se for ausência justificada trago FJ, lembrando que tem um relatório que trago a ausência e a ausência justificada como F apenas, mas obtenho um resultado esperado mas errado, já que eu deveria ver por exemplo: caso aluno tenha presença em duas aulas: **, caso ausência em uma e presença em outra: F*, aí sim ficaria perfeito 😁

    • @mqfs
      @mqfs  2 ปีที่แล้ว

      Hehehe, parece um baita relatório hein! E se vc contasse a quantidade de aulas e utilizasse esse retorno numa função lpad, por exemplo? Daí a lpad vc completa uma string vazia com *... talvez dê certo

  • @comalevecongelados8752
    @comalevecongelados8752 2 ปีที่แล้ว

    Parabens !!! Sucesso viu irmão.!!!

  • @GaragemDoSiegel
    @GaragemDoSiegel 2 ปีที่แล้ว +1

    Muito legal! obrigado por compartilhar. Tenho uma situacao parecida, porém ao invés de somar numeros eu gostaria de listar campos String, no caso, codigo dos produtos vendidos no lugar do valor. tem algum jeito de ele encaixar os valores linha a linha. consegui chegar até a parte q vc fez ali onde ele lista, mas cada coluna fica em registro diferentes. gostaria é que na linha um, todos os campos tivesse valor por funcionario, mesmo q os produtos fossem diferentes. É possível?

  • @talitaedwigessantos1364
    @talitaedwigessantos1364 2 ปีที่แล้ว +1

    Muito show! Estou simulando em meu sistema porém o pivoteamento nao respeita a ordenação do select base tem alguma maneira de inserir a ordenação de acordo com o que eu preciso?

  • @TorresForte
    @TorresForte ปีที่แล้ว +1

    🚀🚀

    • @mqfs
      @mqfs  ปีที่แล้ว

      Show!!!

  • @irozesilva828
    @irozesilva828 3 ปีที่แล้ว +1

    Cara, você é fera!!!

    • @mqfs
      @mqfs  3 ปีที่แล้ว

      Valeeu!! 💪🏻💪🏻💪🏻

  • @AntonioRonyMarcelinoAndrade
    @AntonioRonyMarcelinoAndrade 3 ปีที่แล้ว +1

    Ajudou muito.

    • @mqfs
      @mqfs  3 ปีที่แล้ว

      Que bom!!

  • @joaopoliceno8844
    @joaopoliceno8844 3 ปีที่แล้ว +1

    Top.

    • @mqfs
      @mqfs  3 ปีที่แล้ว

      Valeeeu!! 💪🏻💪🏻💪🏻

  • @luizriacho
    @luizriacho 4 หลายเดือนก่อน

    Boa tarde meu caro, muito interessante o seu script.... poderia ser util em alguma situação que não tenha que retornar mais de 255 caracteres, porque na primeira instrução ele vai retornar uma string com no máximo 255 caracteres. abraço e obrigado pelos ensinamentos.

    • @luizriacho
      @luizriacho 4 หลายเดือนก่อน

      select periodo, sum(iif(media.lin= 2600, media.media,0))as "2600",sum(iif(media.lin= 2600, media.meta_dourado,0))as "Meta-2600", sum(iif(media.lin= 2720, media.media,0))as "2720",sum(iif(media.lin= 2720, media.meta_dourado,0))as "Meta-2720", sum(iif(media ---- OBSERVE QUE AQUI ELA PARA, EXATAMENTE COM 255 CARACTERES.

  • @NoniLevinson
    @NoniLevinson 3 ปีที่แล้ว +1

    Muito bom! Nada como usar a massa cinzenta.
    Por que quando quer isentar o select que copiou não usa o “format selected text” do menu de contexto do IBExpert?

    • @mqfs
      @mqfs  3 ปีที่แล้ว +1

      hehehh, pra ser sincero é por chatice minha mesmo, gosto do meu jeito de escrever...

  • @lucaszanettesilva148
    @lucaszanettesilva148 3 ปีที่แล้ว +1

    Boa tarde,
    Estou com um problema de deadlock, basicamente minha tabela que controla o produto saldo recebe updates no mesmo produto causando o deadlock, tentei resolver criando uma transação via FireDac na aplicação, diminuiu a frequencia do erro mas ainda acontece. Existe uma solução via firebird para resolver? algo que faça com que respeite a ordem das transações?

    • @mqfs
      @mqfs  3 ปีที่แล้ว

      Opa, veja se esse vídeo pode te ajudar:
      Como controlar timeout de transação para o LOCK CONFLICTth-cam.com/video/hKAnZTLjlco/w-d-xo.html
      Várias pessoas tem esse mesmo tipo de problema, e a solução definitiva é criar um log de estoque, onde só se insere registros de entrada e saída de qualquer movimentação. Além de resolver o lock conflict, vc também tem a possibilidade de tirar um relatório ou gerar inventário para sped em qualquer data.
      Pra ter performance nessa solução, existe uma possibilidade de resolver com uma técnica de geração de saldos mensal de cada produto, vc pode ver mais em: www.hotmart.com/product/posicao-de-estoque-alta-performance/C56252641O

  • @alexferrazoliver
    @alexferrazoliver 2 ปีที่แล้ว +1

    Eu tive que ter outro Pivot para contornar essa situação, trazendo a soma em colunas as presenças, ausências e ausências justificadas, para pelo menos ter o resultado fiel das frequências, já que o primeiro Pivot mostra os alunos em linhas e os dias em colunas, mas não repete o número de dias acima ou não traz a informação concatenada, mesmo se houver repetição da informação 😭

    • @mqfs
      @mqfs  2 ปีที่แล้ว +1

      Olha isso:
      select
      lpad('',count(1),'*')
      from (/*Simulando retorno de duas aulas no mesmo dia*/
      select 1 campo from rdb$database
      union all select 1 campo from rdb$database) x
      resultado: **

  • @rjsouza84
    @rjsouza84 3 ปีที่แล้ว +1

    Ola, muito top. Tentei fazer aqui em um bd que tenho, mas meu firebird está dando erro ao utilizar aspas dupla para colocar o nome do campo. Seria pela versão que utilizo? Tem alguma outra forma de renomear o titulo da coluna com nome composto?

    • @mqfs
      @mqfs  3 ปีที่แล้ว +1

      opa, em teoria não devia dar erro não, mas vc pode fazer diferente, pode deixar sem as aspas duplas mesmo, e dar replace pra trocar espaço por underline, cuidando do tamanho do nome do campo, pois se não me engano o limite é um char de 31

    • @rjsouza84
      @rjsouza84 3 ปีที่แล้ว +1

      @@mqfs ok. Muito obrigado pela dica e atenção.

  • @alineguarato4780
    @alineguarato4780 ปีที่แล้ว +2

    Ahh pena q não é "só" com o select :( precisa do passo de copiar o resultado de 1 select e fazer outro. Eu precisa de um select só para uma ferramenta de BI. Tem como?

    • @mqfs
      @mqfs  ปีที่แล้ว +1

      Oi Aline, tudo joia?
      Realmente o dinâmico precisa ser executado em dois passos, mas já chegou a ver se o pivoteamento fixo pode te ajudar? Esse vc roda em um passo só, veja: th-cam.com/video/RuzSXH1F2Oo/w-d-xo.html

    • @alineguarato4780
      @alineguarato4780 ปีที่แล้ว

      @@mqfs o fixo não adianta pq a consulta é por range de data e o pivot é no mes/ano... e precisava de uma consulta só pq o BI da Sankhya não aceita diferente. Mas muito obrigada pelas dicas e pelo retorno. 😊

  • @zilondequadrosmaciel1006
    @zilondequadrosmaciel1006 3 ปีที่แล้ว +4

    Edson, muito bom, mas não querendo ser chato, *não é dinâmico,* porque a cada novo funcionário ele *não agrega* automaticamente, um abraço.

    • @mqfs
      @mqfs  3 ปีที่แล้ว +1

      Vou preparar um vídeo mostrando o dinamismo que expliquei no fim do vídeo

    • @zilondequadrosmaciel1006
      @zilondequadrosmaciel1006 3 ปีที่แล้ว +1

      *Valeu* Edson, um abaço.

  • @andeerdacampo_dev
    @andeerdacampo_dev 3 ปีที่แล้ว +1

    Bom sql, mas a cada novo funcionário é preciso dar manutenção no sql?! não estou vendo muito dinamismo nisso...

    • @mqfs
      @mqfs  3 ปีที่แล้ว

      Aí é que está, o primeiro select vai gerar o segundo, e o segundo vai gerar tantas colunas quantos funcionários existir no período selecionado. Simples assim. Vou preparar um vídeo mostrando o dinamismo que expliquei no fim do vídeo

    • @andeerdacampo_dev
      @andeerdacampo_dev 3 ปีที่แล้ว +2

      ​@@mqfs Muito bom. Apenas para complementar a minha resposta. Claro que fazendo isso diretamente em uma aplicação, executando os sql's e percorrendo o resultado de cada um, é possível fazer dinamicamente, mas talvez inserir isso dentro de um relatório ou outros meios para visualizar os dados, se torna um trabalho muito árduo.

  • @jeffersonmcorreia9608
    @jeffersonmcorreia9608 3 ปีที่แล้ว +1

    Olá, como fazer para sincronizar dados com uma base em mysql na nuvem? Você faz consultoria?

    • @mqfs
      @mqfs  3 ปีที่แล้ว

      Opa, sobre mysql infelizmente não tenho conhecimento suficiente pra te ajudar, mas sei quem manja e presta consultoria sobre isso, é o pessoal da Performance DB: performancedb.com.br/

  • @reinaldosergio7692
    @reinaldosergio7692 ปีที่แล้ว

    Teria como ter um Saldo?

  • @Luke-gq1uy
    @Luke-gq1uy 9 หลายเดือนก่อน

    E como eu executo depois esses dois passos?

    • @lucaskirchesch2700
      @lucaskirchesch2700 หลายเดือนก่อน

      Jogo numa varievel do tipo nchar e da um exec(@nomedaSuaVariavel)
      Vai te retornar a listagem

  • @hebertmartins1561
    @hebertmartins1561 7 หลายเดือนก่อน

    interessante, pena que não funciona

  • @jvsilva1998
    @jvsilva1998 ปีที่แล้ว

    🚀🚀🚀🚀