Jump to content
Sign in to follow this  
araujoronaldo

SQL - resultado de 3 últimos preços em 3 colunas e não 3 linhas

Recommended Posts

Bom dia Pessoal.

Alguém saberia dizer se, no SQL Server, existe algum recurso exceto PIVOT TABLE, que eu consiga mostrar o resultado dos 3 últimos preços de compra, que estão sendo apresentados em 3 linhas e apresentá-los em uma única linha em 3 colunas ?

Segue a sentença SQL abaixo.   Como as 3 linhas possuem os mesmos dados, o que difere é somente o preço unitário das compras. Gostaria de colunar estes preços em 3 colunas, o que resultaria em uma única linha.

SELECT TOP 3
ROW_NUMBER() OVER(ORDER BY TMOV.IDMOV) as LINHA,
TPRODUTO.CODIGOPRD AS CÓDIGO,
TPRODUTO.DESCRICAO AS PRODUTO,
TTB1.DESCRICAO     AS CLASSIFICAÇÃO,
TITMMOV.CODUND     AS UND,
TMOV.DATASAIDA     AS MOVIMENTADO,     
FCFO.CODETD        AS UF,
TITMMOV.PRECOUNITARIO

FROM TMOV (nolock) INNER JOIN FCFO (nolock)
ON TMOV.CODCOLIGADA = FCFO.CODCOLIGADA        AND
   TMOV.CODCFO      = FCFO.CODCFO
INNER JOIN TITMMOV (nolock)
ON TMOV.CODCOLIGADA  =  TITMMOV.CODCOLIGADA   AND
   TMOV.IDMOV        =  TITMMOV.IDMOV
INNER JOIN TPRODUTO (nolock)
ON TPRODUTO.CODCOLPRD = TITMMOV.CODCOLIGADA   AND
   TPRODUTO.IDPRD     = TITMMOV.IDPRD
INNER JOIN TPRODUTODEF (NOLOCK)
ON TPRODUTO.CODCOLPRD    = TPRODUTODEF.CODCOLIGADA AND
   TPRODUTO.IDPRD        = TPRODUTODEF.IDPRD
INNER JOIN TTB1 (NOLOCK)
ON TPRODUTODEF.CODCOLIGADA = TTB1.CODCOLIGADA      AND
   TPRODUTODEF.CODTB1FAT   = TTB1.CODTB1FAT

WHERE  
      TMOV.CODCOLIGADA = 1                   AND
      TMOV.STATUS <> 'C'                     AND
      TMOV.CODTMV like '1.2%'                AND
      TPRODUTO.CODIGOPRD = '05.002.01127'

GROUP BY
TPRODUTO.CODIGOPRD,
TPRODUTO.DESCRICAO,
TTB1.DESCRICAO,
TITMMOV.CODUND,
TMOV.IDMOV,
TMOV.DATASAIDA,
FCFO.CODETD,
TITMMOV.PRECOUNITARIO
      
order by tmov.DATASAIDA desc
 

 

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.

Sign in to follow this  

  • Similar Content

    • By Fórum RM
      Quando solicita pra rodar relatórios no Gerador em versões a partir da 12.1.21 e não está instalado o client 11, basta instalar esse arquivo, de acordo com a versão do seu Windows.
      https://www.forumrm.com.br/files/file/387-client-sql-server-2012
       
    • By Cláudio Matias
      Prezados, boa tarde.
      Sou novo aqui no fórum e gostaria, se possível, de expor uma dúvida e caso alguém possa me ajudar, ficarei muito grato.
      Situação: Preciso desenvolver uma consulta SQL que me retorne a jornada planejada do funcionário, montando o quadro de horário em linhas. Utilizei a tabela AJORHOR, porém, ela não atende em todos os casos, já que a jornada da visão do horário pode não corresponder a jornada executada do funcionário. 
      Exemplo do resultado: Linha 1: CHAPA 0001 - SEG - 7:30 - 12:00 - 13:00 - 17:45
                                               Linha 2: CHAPA 0001 - TER - 7:30 - 12:00 - 13:00 - 17:45
                                               Linha 3: CHAPA 0001 - QUA - 7:30 - 12:00 - 13:00 - 17:45
                                               ...
                                               ...
                                               Linha 6: CHAPA 0001 - SAB - COMPENSADO
                                               Linha 7: CHAPA 0001 - DOM - DESCANSO
                                               
       
    • By luisgustavogomes
      Pessoal, boa tarde!
       
      Preciso executar um SP dentro do visualizador de consultas !
       Alguém já conseguiu efetuar essa operação? 
    • By Ed Wilson Marçal Faria
      Boa tarde,
      Preciso criar um relatório com o saldo físico e financeiro do estoque por local e intervalo de tempo. Exemplo: 01/10/2017 a 05/10/2017
      Fiz a SQL, mas retorna apenas os itens que tiveram movimento no período. Por exemplo, um item que teve seu último movimento em 25/09/2017 não aparecerá no período de 01/10/2017 a 05/10/2017:
      with rownumber as(
      select
      ROW_NUMBER() over(partition by a.idprd, a.codloc order by a.sequencial desc)as rownumber
      ,A.SEQUENCIAL 
      ,A.DATAMOVIMENTO
      ,A.IDPRD                                
      ,A.CODLOC
      ,A.SALDOMOV
      ,A.TOTALMOV
      ,A.CUSTOMEDMOV
      ,B.NOMEFANTASIA
      ,case when C.CODTB3FAT='001' then 'Medicamentos'
            when C.CODTB3FAT='002' then 'Materiais' 
      else C.CODTB3FAT end TIPO
      from TRELSLD as A
      inner join tproduto AS B
      on A.idprd=B.idprd
      inner join TPRODUTODEF AS C
      on A.IDPRD=C.IDPRD AND A.CODCOLIGADA=C.CODCOLIGADA
      WHERE A.CODFILIAL=2 and a.IDPRD='38' and A.DATAMOVIMENTO between '2017-10-01 00:00:00.000' and '2017-10-05 00:00:00.000'  )
      select * from rownumber where rownumber=1 and SALDOMOV <> '0.0000'
      order by IDPRD
       
      Obrigado.

    • By henrique bonfim
      Boa tarde, gente.
      Criei um relatório com os seguintes parâmetros CODCCUSTO, CODCOLIGADA e NUMEROMOV.
      Acontece que determinado usuário possui filtros nas tabelas, FLAN.CODCCUSTO, TMOV.CODLOC e GCCUSTO.CODCCUSTO
      SELECT    TMOV.CODCOLIGADA AS 'Cód. coligada', TMOV.CODFILIAL AS 'Cód. filial', GFILIAL.NOMEFANTASIA AS 'Filial', TMOV.CODLOC, TMOV.CODTMV AS 'CODTMOV', TMOV.IDMOV AS 'Identificador', TMOV.NUMEROMOV AS 'Número',
              TMOV.VALORLIQUIDO AS 'Valor líquido', TMOV.VALORBRUTOORIG AS 'Valor bruto', TITMMOV.NSEQITMMOV AS 'ITEM', TITMMOV.IDPRD AS 'IDPRODUTO', TPRODUTO.CODIGOPRD AS 'Cód. produto',
              TPRODUTO.NOMEFANTASIA AS 'Produto', TITMMOV.CODUND AS 'Unidade', TITMMOV.PRECOUNITARIO AS 'Preço unitário', CASE TITMMOV.QUANTIDADE WHEN 0 THEN NULL ELSE TITMMOV.QUANTIDADE END AS 'Quantidade',
              TITMMOV.QUANTIDADETOTAL AS 'Quantidade total', TITMMOV.VALORBRUTOITEM AS 'Valor bruto item', TITMMOV.VALORBRUTOITEMORIG AS 'Valor bruto item origem',
              TITMMOV.VALORDESC AS 'Valor desconto', TMOV.CODCCUSTO AS 'Cod Centro de Custo', GCCUSTO.NOME AS 'Centro de custo', TLOC.CODLOC AS 'Cód. local',
              TLOC.NOME AS 'Local', FCFO.CODCFO AS 'Cód. fornecedor', FCFO.NOMEFANTASIA AS 'Fornecedor', TMOV.DATAEMISSAO AS 'Emissao'
      FROM TMOV WITH(NOLOCK)
      INNER JOIN GFILIAL WITH(NOLOCK) ON GFILIAL.CODCOLIGADA = TMOV.CODCOLIGADA
             AND GFILIAL.CODFILIAL = TMOV.CODFILIAL
      INNER JOIN TLOC WITH(NOLOCK) ON TLOC.CODCOLIGADA = TMOV.CODCOLIGADA
             AND TLOC.CODLOC = TMOV.CODLOC
      INNER JOIN GCCUSTO WITH(NOLOCK) ON GCCUSTO.CODCOLIGADA = TMOV.CODCOLIGADA
             AND GCCUSTO.CODCCUSTO = TMOV.CODCCUSTO
      INNER JOIN TITMMOV WITH(NOLOCK) ON TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA
             AND TITMMOV.IDMOV = TMOV.IDMOV
      INNER JOIN TPRODUTO WITH(NOLOCK) ON TPRODUTO.IDPRD = TITMMOV.IDPRD
      INNER JOIN FCFO WITH(NOLOCK) ON FCFO.CODCOLIGADA = TMOV.CODCOLCFO
             AND FCFO.CODCFO = TMOV.CODCFO
      WHERE TMOV.NUMEROMOV=:NUMEROMOV AND TMOV.CODCOLIGADA=:CODCOLIGADA AND TMOV.CODTMV='1.1.08' AND TMOV.CODCCUSTO=:CODCCUSTO
      GROUP BY TMOV.IDMOV, TMOV.CODCOLIGADA, TMOV.CODFILIAL, GFILIAL.NOMEFANTASIA, TMOV.CODLOC, TMOV.CODTMV, TMOV.NUMEROMOV, TMOV.VALORLIQUIDO, TMOV.VALORBRUTOORIG, TITMMOV.NSEQITMMOV, TITMMOV.IDPRD,
              TPRODUTO.CODIGOPRD, TPRODUTO.NOMEFANTASIA, TITMMOV.CODUND, TITMMOV.PRECOUNITARIO, TITMMOV.QUANTIDADE, TITMMOV.QUANTIDADETOTAL,
              TITMMOV.VALORBRUTOITEM, TITMMOV.VALORBRUTOITEMORIG,    TITMMOV.VALORDESC, TMOV.CODCCUSTO, GCCUSTO.NOME, TLOC.CODLOC,
              TLOC.NOME, FCFO.CODCFO, FCFO.NOMEFANTASIA, TMOV.DATAEMISSAO
      Porém, ao executar o relatório, surge a seguinte mensagem
      "Erro ao executar relatório
      Erro ao executar relatório
      Erro ao executar sentença.
      Não será possível executar essa consulta, pois não foi possível aplicar o filtro por usuário.
      Essa consulta deverá conter o(s) seguinte(s) campo(s) da tabela GCCUSTO: CODCCUSTO
      Usuário da execução: METROENG\MTPLAN02$"
       
      Observem que o campo GCCUSTO.CODCCUSTO, já está na consulta.
      Também fiz um teste trocando o filtro do usuário da tabela GCCUSTO para a tabela TMOV.CODCCUSTO, que tambpem faz parte da planilha e dos parâmetros do relatório, Retornando o mesmo erro ".... tabela TMOV: CODCCUSTO".
       
      Alguém pode me ajudar?
       
    • By henrique bonfim
      Bom dia.
      Sou novo aqui no fórum. Espero poder ajudar e ser ajudado por todos e a todo aqui.
      Estou com um problema. No ano de 2016, tivemos um problema com unidades base no cadastro de produtos o qual exibia a seguinte mensagem:
      "Conversão não permitida: a unidade de origem UN e a de destino MT possuem unidade base diferente."
      E assim por diante com várias unidades, num total de 85 produtos e em torno de 750 registros do sistema. Uma consultora da filial local, realizou uma alteração via BD onde o problema foi corrigido.
      Detalhe, a versão era a 11.82.xxx
      Acontece que, hoje, ao gerar os Saldos e Custos o mesmo erro voltou a aparecer.
      Executei uma busca no SQL Server usando a consulta
      SELECT TMOV.CODCOLIGADA, TMOV.IDMOV, TMOV.CODTMV, TMOV.NUMEROMOV, TMOV.DATACRIACAO, TITMMOV.NSEQITMMOV, TITMMOV.CODUND, TUND.CODUNDBASE, TPRODUTODEF.IDPRD, TPRODUTO.CODIGOPRD, TPRODUTO.NOMEFANTASIA, TPRODUTODEF.CODUNDCONTROLE, TUND2.CODUNDBASE
      FROM TMOV
      JOIN TITMMOV ON (TMOV.IDMOV = TITMMOV.IDMOV AND TMOV.CODCOLIGADA = TITMMOV.CODCOLIGADA)
      JOIN TPRODUTODEF ON(TITMMOV.IDPRD = TPRODUTODEF.IDPRD AND TITMMOV.CODCOLIGADA = TPRODUTODEF.CODCOLIGADA)
      JOIN TUND ON (TITMMOV.CODUND = TUND.CODUND)
      JOIN TUND AS TUND2 ON (TUND2.CODUND = TPRODUTODEF.CODUNDCONTROLE)
      JOIN TPRODUTO ON TPRODUTO.IDPRD=TPRODUTODEF.IDPRD
      WHERE TUND.CODUNDBASE <> TUND2.CODUNDBASE
      ORDER BY TMOV.CODCOLIGADA, TPRODUTO.NOMEFANTASIA
      ... e notei que o trabalho feito pela consultora no ano passado foi desfeito. 
      A pegunta é: Isso pode ter acontecido na atualização do BD, da versão 11.82.xxx para a 12.1.15.154 (atual utilizada). Alguém já passou por algo parecido?
      Ah sim!... Não sou quem faz a atualização do BD. Temos um TI que informa não ter acontecido quaisquer erros no processo. 
      Mas como pode haver essa divergência entre unidade base para produtos com movimentação, e mais ainda, o trabalho realizado pela consultora no BD ter simplesmente desaparecido?!
    • By ChromusMaster
      Alguem já conseguiu desenvolver ou tenha ideia de como buscar um item de movimento onde consiga saber o saldo dele subtraindo a quantidade de entrada com a de saida ?
      At.. Nathann Lucas
    • By ChromusMaster
      BOa tarde como fazer para que uma consulta rode internamente ao TOTVS e busque os dados filtrando por parâmetros ? Ou seja, não retornar os movimentos inseridos pelo usuario.
      Segue Trecho para explicar melhor
      FROM TMOV A INNER JOIN FCFO B ON A.CODCOLIGADA = B.CODCOLIGADA AND A.CODCFO = B.CODCFO INNER JOIN FLAN FL ON FL.CODCOLIGADA=A.CODCOLIGADA AND FL.IDMOV=A.IDMOV WHERE A.CODTMV IN ('1.2.01','1.2.03','1.2.09','1.2.10','1.2.17','1.2.18','1.2.20','1.2.21','1.2.22','1.2.23','1.2.24','1.2.30','1.2.31','1.2.32','1.2.35','1.2.36','1.2.37','1.2.38') AND A.DATACRIACAO >= :INICIAL AND A.DATACRIACAO <= :FINAL AND A.NUMEROMOV NOT IN(:NUMEROMOV)  
    • By sancleyjr
      Bom dia, Colegas estou criando um cubo que analisa as vendas e organiza em grupo e subgrupo, porém os dados estão duplicados, isso acontece apenas quando insiro a coluna de grupo e subgrupo. 
      Se alguém tiver uma ideia vou agradecer muito! 
      analise de vendas.txt
    • By raphaelluizschettino
      Meus amigos, estou com dúvidas referentes a algumas tabelas estranhas presentes no relatório padrão Totvs, com o nome de espelho do Cartão de ponto.
      Na imagem marquei a 'tabela' que não consegui achar no sql.
      Alguém poderia me ajudar?
      A Totvs está há um mês com tais informações e os atendentes não conseguem ver de fato do que se trata.

  • Recent

×
×
  • Create New...

Important Information

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