none
consultar 2 tabelas e ver resultado em porcentagem RRS feed

  • Pergunta

  • ola pessoal, preciso de uma ajuda de voces...

    estou querendo saber o valor da diferenca desses precos em porcentagem sera que tem como ? 

    eu tenho esse script : 

    SELECT
      Prcprdcab_descricao,chb.Produto,Sigla_Cor,preco,id,chb.BaseCodigo,Aplicacao
    FROM
        prcprd prd
        INNER JOIN prdchb chb
        ON prd.Produto = chb.Produto
    	where Prcprdcab_descricao = '801' and Aplicacao = 'expos'
    
    
    SELECT
      Prcprdcab_descricao,chb.Produto,Sigla_Cor,preco,id,chb.BaseCodigo,Aplicacao
    FROM
        prcprd prd
        INNER JOIN prdchb chb
        ON prd.Produto = chb.Produto
    	where Prcprdcab_descricao = '712' and Aplicacao = 'expos'

    que deu este resultado

    Prcprdcab_descricao	Produto	Sigla_Cor	preco	id	BaseCodigo	Aplicacao
    801	03754	sem cor	35,7604	8239856	Eletrofrio	Expos
    801	03754	sem cor	35,7604	8239856	Eletrofrio	Expos
    801	03754	sem cor	35,7604	8239856	Eletrofrio	Expos
    801	04554	sem cor	50,4866	8239944	Eletrofrio	Expos
    801	04655	sem cor	71,7	8239954	Eletrofrio	Expos
    801	04656	sem cor	71,7	8239955	Eletrofrio	Expos
    801	04694	sem cor	50,4866	8239957	Eletrofrio	Expos

    Prcprdcab_descricao	Produto	Sigla_Cor	preco	id	BaseCodigo	Aplicacao
    712	03754	sem cor	35,7604	7798652	Eletrofrio	Expos
    712	03754	sem cor	35,7604	7798652	Eletrofrio	Expos
    712	03754	sem cor	35,7604	7798652	Eletrofrio	Expos
    712	04554	sem cor	50,4866	7798740	Eletrofrio	Expos
    712	04655	sem cor	71,7	7798750	Eletrofrio	Expos
    712	04656	sem cor	71,7	7798751	Eletrofrio	Expos
    712	04694	sem cor	50,4866	7798753	Eletrofrio	Expos


    oque diferencia um do outro é o PRCPRDCAB_DESCRICAO e o PRECO. Gostaria de comparar o preco do 712 com o 801 e ter o resultado em porcentagem

    quinta-feira, 25 de janeiro de 2018 16:03

Respostas

Todas as Respostas

  • Deleted
    quinta-feira, 25 de janeiro de 2018 16:41
  • entao é o seguinte,

    eu gostaria de filtrar pela tabela PRDCHB por exeplo 

    select * from PRDCHB where Aplicacao = 'expos'


    que me da este resultado

    Aplicacao	Produto	Chave_busca_montada	Chave_busca	Dimensao_1	Dimensao_2	Esconder_orcamento	Dimensao_3	Dimensao_4	multiplo	dividir_multiplo	idprdchb	multiploVizinho	BaseCodigo
    Expos	1199852	Reforço EHVP-6 250				1			NULL	0	810947	NULL	Eletrofrio
    Expos	1199855	Reforço EHVP-6 375				1			NULL	0	810948	NULL	Eletrofrio
    Expos	1197389	Reforço EHVP-6 T 229				1			NULL	0	810949	NULL	Eletrofrio
    Expos	1197390	Reforço EHVP-6 T 269				1			NULL	0	810950	NULL	Eletrofrio

    desta tabela oq me interessa é APLICACAO,PRODUTO E CHAVE_BUSCA_MONTADA

    gostaria que essa tabela buscasse pelo PRODUTO na tabela PRCPRD e compare o PRECO e me da a diferenca em porcentagem.

    esta é a tabela PRCPRD

    Prcprdcab_descricao   Produto	Sigla_Cor	Preco	Ipi	Icms	PRCPRD_ADICIONAL	LP_PRCPRD_COMPRIMENTO	LP_PRCPRD_ALTURA	LP_PRCPRD_PROFUNDIDADE	PRECOFAB	PRECOFABADC	PRECOFABADCCMP	PRECOFABADCALT	PRECOFABADCPRF	id	BaseCodigo
    712	01004	sem cor	2,67	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	7798021	Eletrofrio
    712	01005	sem cor	2,59	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	7798022	Eletrofrio
    712	01013	sem cor	3	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	7798023	Eletrofrio
    801	01004	sem cor	2,70	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	8239225	Eletrofrio
    801	01005	sem cor	2,61	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	8239226	Eletrofrio
    801	01013	sem cor	5	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	8239227	Eletrofrio
    ela vai comparar o preco da PRCPRDCAB_DESCRICAO 712 com a 801 e me da o retorno em porcentagem


    • Editado willianM quinta-feira, 25 de janeiro de 2018 17:22
    quinta-feira, 25 de janeiro de 2018 17:20
  • Deleted
    quinta-feira, 25 de janeiro de 2018 20:46
  • entao é o seguinte,

    eu gostaria de filtrar pela tabela PRDCHB (...)

    desta tabela oq me interessa é APLICACAO, PRODUTO E CHAVE_BUSCA_MONTADA

    gostaria que essa tabela buscasse pelo PRODUTO na tabela PRCPRD e compare o PRECO e me da a diferenca em porcentagem.

    (...) ela vai comparar o preco da PRCPRDCAB_DESCRICAO 712 com a 801 e me da o retorno em porcentagem

    (1) O que eu não entendi é como há linhas repetidas. Na mensagem inicial deste tópico aparece

    801	03754	sem cor	35,7604	8239856	Eletrofrio	Expos
    801	03754	sem cor	35,7604	8239856	Eletrofrio	Expos
    801	03754	sem cor	35,7604	8239856	Eletrofrio	Expos
    ...
    712    03754    sem cor    35,7604    7798652    Eletrofrio    Expos
    712    03754    sem cor    35,7604    7798652    Eletrofrio    Expos
    712    03754    sem cor    35,7604    7798652    Eletrofrio    Expos

    Ou seja, 3 linhas idênticas para um mesmo produto, tanto para 801 quanto para 712. Se não houver como diferenciar essas linhas, não há como calcular a diferença de preço.

    (2) Poderia executar o código abaixo e transcrever o resultado para este tópico?

    -- código #2
    SELECT *
      from PRCPRD
      where Produto = '03754'
    and PRCPRDCAB_DESCRICAO = '712';

     

    (3) O cálculo do percentual da diferença deve ser qual é o percentual do menor preço necessário para atingir o maior preço?



    e-mail       José Diz     Belo Horizonte, MG - Brasil



    William,

    Por gentileza, se possível responda as questões levantadas pelo José Diz.


    Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 25 de janeiro de 2018 23:21
  • 1 -> entao deixa eu te esplicar, eu irei filtrar pelo prcprdcab_descricao, produto e sigla cor eles nunca irao se repitir, ali encima no meu exemplo fiz algo errado, mas ele nao pode se repitir.

    segue aqui abaixo do filtro que eu fiz pelo codigo que ali encima estava repetindo.

    Prcprdcab_descricao	Produto	Sigla_Cor	Preco	Ipi	Icms	PRCPRD_ADICIONAL	LP_PRCPRD_COMPRIMENTO	LP_PRCPRD_ALTURA	LP_PRCPRD_PROFUNDIDADE	PRECOFAB	PRECOFABADC	PRECOFABADCCMP	PRECOFABADCALT	PRECOFABADCPRF	id	BaseCodigo
    706	03754	sem cor	35,7604	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	5455093	Eletrofrio
    707	03754	sem cor	35,7604	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	5774149	Eletrofrio
    708	03754	sem cor	35,7604	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	6094960	Eletrofrio
    709	03754	sem cor	35,7604	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	6419597	Eletrofrio
    710	03754	sem cor	35,7604	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	6744616	Eletrofrio
    711	03754	sem cor	35,7604	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	7395562	Eletrofrio
    712	03754	sem cor	35,7604	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	7798652	Eletrofrio
    US$2017	03754	sem cor	35,7604	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	7074138	Eletrofrio
    801	03754	sem cor	35,7604	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	8239856	Eletrofrio


    2 -> segue o resultado 

    Prcprdcab_descricao	Produto	Sigla_Cor	Preco	Ipi	Icms	PRCPRD_ADICIONAL	LP_PRCPRD_COMPRIMENTO	LP_PRCPRD_ALTURA	LP_PRCPRD_PROFUNDIDADE	PRECOFAB	PRECOFABADC	PRECOFABADCCMP	PRECOFABADCALT	PRECOFABADCPRF	id	BaseCodigo
    712	03754	sem cor	35,7604	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	7798652	Eletrofrio

    3--> oque eu preciso é de uma razão para eu fazer a comparacao sobre o valor 

    801	01004	sem cor	2,70	0

    e da 

    712	01004	sem cor	2,67	0

    que seria 2,70/2,67

    Prcprdcab_descricao   Produto	Sigla_Cor	Preco	Ipi	Icms	PRCPRD_ADICIONAL	LP_PRCPRD_COMPRIMENTO	LP_PRCPRD_ALTURA	LP_PRCPRD_PROFUNDIDADE	PRECOFAB	PRECOFABADC	PRECOFABADCCMP	PRECOFABADCALT	PRECOFABADCPRF	id	BaseCodigo
    712	01004	sem cor	2,67	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	7798021	Eletrofrio
    712	01005	sem cor	2,59	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	7798022	Eletrofrio
    712	01013	sem cor	3	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	7798023	Eletrofrio
    801	01004	sem cor	2,70	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	8239225	Eletrofrio
    801	01005	sem cor	2,61	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	8239226	Eletrofrio
    801	01013	sem cor	5	0	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	8239227	Eletrofrio



    sexta-feira, 26 de janeiro de 2018 10:38
  • Deleted
    sexta-feira, 26 de janeiro de 2018 11:13
  • Bom dia , Fiz um esbolso  aqui  tentando chegar na sua solução , o que vc precisa e calculada no meu exemplo 

    pelo campo ([Porcentagem relativa do preco atual sobre o proximo preço do produto])

    veja 

    DECLARE @Tabela TABLE (
        Prcprdcab_descricao INT,
        Produto INT,
        Sigla_Cor VARCHAR(20),
        Preco DECIMAL(18, 2),
        Ipi INT,
        Icms INT,
        PRCPRD_ADICIONAL INT,
        LP_PRCPRD_COMPRIMENTO INT,
        LP_PRCPRD_ALTURA INT,
        LP_PRCPRD_PROFUNDIDADE INT,
        PRECOFAB INT,
        PRECOFABADC INT,
        PRECOFABADCCMP INT,
        PRECOFABADCALT INT,
        PRECOFABADCPRF INT,
        id INT,
        BaseCodigo VARCHAR(20));
    
    INSERT INTO @Tabela (Prcprdcab_descricao,
                         Produto,
                         Sigla_Cor,
                         Preco,
                         Ipi,
                         Icms,
                         PRCPRD_ADICIONAL,
                         LP_PRCPRD_COMPRIMENTO,
                         LP_PRCPRD_ALTURA,
                         LP_PRCPRD_PROFUNDIDADE,
                         PRECOFAB,
                         PRECOFABADC,
                         PRECOFABADCCMP,
                         PRECOFABADCALT,
                         PRECOFABADCPRF,
                         id,
                         BaseCodigo)
    VALUES (712, 01004, 'sem cor', 2.67, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 7798021, 'Eletrofrio'),
    (712, 01005, 'sem cor', 2.59, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 7798022, 'Eletrofrio'),
    (712, 01013, 'sem cor', 3, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 7798023, 'Eletrofrio'),
    (801, 01004, 'sem cor', 2.70, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8239225, 'Eletrofrio'),
    (801, 01005, 'sem cor', 2.61, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8239226, 'Eletrofrio'),
    (801, 01013, 'sem cor', 5, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8239227, 'Eletrofrio');
    
    
    WITH Dados
      AS (SELECT T.Prcprdcab_descricao,
                 T.Produto,
                 T.Sigla_Cor,
                 T.Ipi,
                 T.Icms,
                 T.id,
                 T.BaseCodigo,
                 T.Preco,
                 [Total Geral dos Preços] = SUM(T.Preco) OVER (PARTITION BY T.Prcprdcab_descricao),
    			 [proximo preco do produto] = LEAD(T.Preco,1,T.Preco) OVER(PARTITION BY  T.Prcprdcab_descricao ORDER BY T.Produto,T.Preco)
            FROM @Tabela AS T
    		WHERE T.Prcprdcab_descricao =712
    		)
    SELECT R.Prcprdcab_descricao,
           R.Produto,
           R.Sigla_Cor,
           R.Ipi,
           R.Icms,
           R.id,
           R.BaseCodigo,
           R.Preco,
           R.[Total Geral dos Preços],
           [Porcentagem relativa do preco sobre o geral] = CONCAT(CAST(((R.Preco / R.[Total Geral dos Preços]) * 100) AS DECIMAL(18, 2)), ' %'),
    	   R.[proximo preco do produto],
    	   ----https://pt.wikihow.com/Calcular-a-Porcentagem-de-Redu%C3%A7%C3%A3o-de-Custos
    	   [Porcentagem relativa do preco atual sobre o proximo preço do produto] = CONCAT( CAST(((( r.Preco -r.[proximo preco do produto]) /R.Preco ) *100 ) AS DECIMAL(18,2)),' %' ) 
    
      FROM Dados R;
    
      --  conforme o artigo temos as seguinte fases
      -- ==================================================================
      --Observação:
      --1)  Determine o preço original do produto ou serviço
      --2) Determine o novo preço do produto ou serviço
      --3)  Determine a diferença entre os dois preços
      --4) Divida a diferença entre ambos pelo preço original.
      --5) Multiplique o número decimal por 100
      -- ==================================================================
    
    

    Wesley Neves - Brasilia-DF     

    https://wesleyneves.wordpress.com/

    SELECT Tab.[that's me:]

    FROM

    (

        VALUES

            ('Wesley Neves'),

            ('Analista.NET'),

            ('Pós Graduando em Banco de Dados com ênfase em BI'),

            ('MTA -SQL Server'),

            ('MTA -Web Developed')

    ) AS Tab ("that's me:");


    "Se a resposta for útil ou ajudar ,não esqueça de marcar"





    Wesley Neves

    sexta-feira, 26 de janeiro de 2018 11:27
  • Jose Diz consegui ter as razao me ajudou muitoo :) agora fica tudo mas facil 

    SELECT C.Produto, C.Chave_busca_montada,c.Aplicacao,
           P1.Sigla_Cor, 
           P1.Preco as [Preço 801], P2.Preco as [Preço 712],
           (P1.Preco /nullif (P2.Preco,0)) as Razão
      from PRDCHB as C 
           inner join PRCPRD as P1 on P1.Produto = C.Produto
           inner join PRCPRD as P2 on P2.Produto = P1.Produto
                                      and P2.Sigla_Cor = P1.Sigla_Cor
                                      --and ...
      where C.Aplicacao = 'expos'
            and P1.Prcprdcab_descricao = '801'
            and P2.Prcprdcab_descricao = '712'
            order by Produto

    deu estes resultados

    Produto	Chave_busca_montada	Aplicacao	Sigla_Cor	Preço 801	Preço 712	Razão
    04655	Vidro curvo dir EHPP AE 45	Expos	sem cor	            71,7	71,7	          1
    04656	Vidro curvo esq EHPP AE 45	Expos	sem cor	            71,7	71,7	          1
    04694	Vidro curvo dir EHPP AI 45	Expos	sem cor	            50,4866	50,4866	          1
    05110	Parafuso base	                Expos	sem cor	            1,6301	1,6301	          1
    07295	Pino fixacao	                Expos	sem cor	            2,6224	2,6224	          1
    07828	Apoio articulacao base	        Expos	sem cor	            5,6779	5,6779	          1
    1106846	Kit caixa conexao II EHU-4	Expos	sem cor	            93,0685	90,9867	          1,02288026711596
    1110145	LUMINARIA INTERNA RETA 375	expos	sem cor	            189,9899	189,9899	  1
    1110177	LUMINARIA INTERNA RETA 250	expos	sem cor	            182,508	182,508	          1

    sexta-feira, 26 de janeiro de 2018 12:37
  • Wesley o seguinte 

    voce viu que nos valores do PRCPRDCAB_DESCRICAO tem 801 e 712 correto,

    entao o 801 se repeto com a 712 tudo oq muda eh a PRCPRDCAB_DESCRICAO e os PRECOS.

    eu gostaria de compara um com o outro conforme o nosso amigo Jose Diz fez ali encima soh que retornando em porcentagem.

    o Jose Diz deu o retorno na RAZAO agora queria o retorno em porcentagem 

    sexta-feira, 26 de janeiro de 2018 12:41
  • pessoal cheguei no resultado que eu precisa, fiz umas mudanca encima da query do jose diz e ficou o seguinte

    SELECT C.Produto, C.Chave_busca_montada,c.Aplicacao,
           P1.Sigla_Cor, 
           P1.Preco as [Preço 801], P2.Preco as [Preço 712],
           (-1*(100*(1-(P1.Preco /nullif (P2.Preco,0)))))  as razao
      from PRDCHB as C 
           inner join PRCPRD as P1 on P1.Produto = C.Produto
           inner join PRCPRD as P2 on P2.Produto = P1.Produto
                                      and P2.Sigla_Cor = P1.Sigla_Cor
                                      --and ...
      where C.Aplicacao = 'expos'
            and P1.Prcprdcab_descricao = '801'
            and P2.Prcprdcab_descricao = '712'
            order by Produto
    
    		

    resultado 

    Produto	Chave_busca_montada		Aplicacao	Sigla_Cor	Preço 801	Preço 712	razao
    03754	Vidro curvo EHPP 53		Expos		sem cor		35,7604		35,7604		0
    03754	Vidro curvo FP 53		Expos		sem cor		35,7604		35,7604		0
    03754	Vidro frontal EHPP 53		Expos		sem cor		35,7604		35,7604		0
    04554	Vidro curvo esq EHPP AI 45	Expos		sem cor		50,4866		50,4866		0
    04655	Vidro curvo dir EHPP AE 45	Expos		sem cor		71,7		71,7		0
    04656	Vidro curvo esq EHPP AE 45	Expos		sem cor		71,7		71,7		0
    04694	Vidro curvo dir EHPP AI 45	Expos		sem cor		50,4866		50,4866		0
    05110	Parafuso base			Expos		sem cor		1,6301		1,6301		0
    07295	Pino fixacao			Expos		sem cor		2,6224		2,6224		0
    07828	Apoio articulacao base		Expos		sem cor		5,6779		5,6779		0
    1106846	Kit caixa conexao II EHU-4	Expos		sem cor		93,0685		90,9867		2,28802671159631
    1110145	LUMINARIA INTERNA RETA 375	expos		sem cor		189,9899	189,9899	0
    1110177	LUMINARIA INTERNA RETA 250	expos		sem cor		182,508		182,508		0
    1110180	LUMINARIA INTERNA RETA 125	expos		sem cor		173,4439	173,4439	0
    1110366	REFORCO ESQUERDO HE2U-0		expos		M000		53,3936		53,3936		0
    1110366	REFORCO ESQUERDO HE2U-4		expos		M000		53,3936		53,3936		0
    1110366	REFORCO ESQUERDO HE2U-0		expos		M003		56,2673		56,2673		0
    1110366	REFORCO ESQUERDO HE2U-4		expos		M003		56,2673		56,2673		0

    Ultima duvida, rs ... como eu faco para no final dos meus resultados aparecer o simbolo '%' ? obrigado

    • Editado willianM sexta-feira, 26 de janeiro de 2018 13:24 acrecentar algo
    sexta-feira, 26 de janeiro de 2018 13:06
  • William,

    Basicamente você poderá fazer uma concatenação de valores, isso pode variar muito dependendo da versão do SQL Server, se estiver utilizar versões anteriores a 2012 será necessário fazer uso da função Convert, caso contrário a versão Concat() poderá lhe ajudar, veja os exemplos:

    -- SQL Server 2008 R2 ou inferior --

    SELECT C.Produto, C.Chave_busca_montada,c.Aplicacao,
           P1.Sigla_Cor, 
           P1.Preco as [Preço 801], P2.Preco as [Preço 712],
          Convert(Varchar(20), (-1*(100*(1-(P1.Preco /nullif (P2.Preco,0)))))+'%')  as razao
      from PRDCHB as C 
           inner join PRCPRD as P1 on P1.Produto = C.Produto
           inner join PRCPRD as P2 on P2.Produto = P1.Produto
                                      and P2.Sigla_Cor = P1.Sigla_Cor
                                      --and ...
      where C.Aplicacao = 'expos'
            and P1.Prcprdcab_descricao = '801'
            and P2.Prcprdcab_descricao = '712'
            order by Produto

    -- SQL Server 2012 ou superior --

    SELECT C.Produto, C.Chave_busca_montada,c.Aplicacao,
           P1.Sigla_Cor, 
           P1.Preco as [Preço 801], P2.Preco as [Preço 712],
          Concat((-1*(100*(1-(P1.Preco /nullif (P2.Preco,0))))),'%')  as razao
      from PRDCHB as C 
           inner join PRCPRD as P1 on P1.Produto = C.Produto
           inner join PRCPRD as P2 on P2.Produto = P1.Produto
                                      and P2.Sigla_Cor = P1.Sigla_Cor
                                      --and ...
      where C.Aplicacao = 'expos'
            and P1.Prcprdcab_descricao = '801'
            and P2.Prcprdcab_descricao = '712'
            order by Produto


    Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 30 de janeiro de 2018 11:28