none
Select com Union e left right RRS feed

  • Pergunta

  • Boa noite.

    No sql server 2000:

    Estou com um probleminha, rsrsrsr, Tenho algumas tabelas relacionadas, Cliente, Produto, Producao, Boleto e boletoxprodutos... Preciso de uma tabela ou querye, que me traga os produtos que foram produzidos, por exemplo:

    descricao          dia-10   %      dia-11     %     dia-12   %      dia-13   %    Total    Media

      Abraçadeira     1000   84,7      1000   86,2    1000   96,2     1000          4000     1000

      caixa 20mm       80      6,7         60     5,1        60     5,1        90            290      72,5

      Prateleira PV     100     8,4        100     8,6      100     8,6        90            390      97,5

           Total           1180               1160              1160              1180          4680     1170 

    Alguem pode me dau uma ideia de como fazer esse select? Não consegui fazer Pivot no sql server 2000. Por favor, preciso de uma força. agradeço.


    helio Passos

    segunda-feira, 3 de dezembro de 2012 22:53

Todas as Respostas

  • Helio,

    Os campos % são campos calculados? se sim, quais campos interagem com eles? a tabela está organizada de que forma? os dias são colunas?

    Se puder passar mais informações, como nome da tabela, campos, chaves e relacionamentos podemos tentar fazer uma consulta que mostre o resultado com essa formatação.


    Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    terça-feira, 4 de dezembro de 2012 09:56
  • Bom dia! Obrigado.

    Eu gostaria de ter os campos % Calculados sim, mas não sei como fazer-lo, a principio seria qtde dia dividada pela qtde total de Produtos produzida no dia vezes 100, não é??? ... Mas como devo proceder? Segue os dados das tabelas (são as informações mais relevantes neste meu caso, mas existem mais dados nas estrut  das tabelas, se for necessário eu passo aqui.)

    Tabela Clientes: id_cliente int chave, descricao var(80)

    tabela Produto : id_Prod Int Chave, Descr_Prod var (100)

    Tabela Producao: cd_Prod int chave, id_prod int, dataP smalldate, Qtde int 'dataP dia em que tal  produto foi produzido e Qtde é a quantidade produzida

    Tabela Boleto: cd_boleto int chave, id_Prod, dtSaida, Qtde, id_cliente

    Tabela boletoxProd: id_BoletoP int chave, cd_boleto int, DtSaida, id_Prod int, dtSaida

    Aguardo aqui (socorro!!!).


    helio Passos


    • Editado HelioPassos terça-feira, 4 de dezembro de 2012 12:08
    terça-feira, 4 de dezembro de 2012 10:52
  • Helio,

    A muito tempo tive uma necessidade igual a sua no SQL Server 2000, sendo que, neste versão não temos suporte para Pivot.

    De alguma forma você vai ter que desenvolver o cálculo em sua aplicação ou Stored Procedure, eu mesmo, desenvolvi toda estrutura de cálculo do meu relatório na Stored Procedure, transformando os valores em colunas e apresentando para cada linha o seu valor específico.

    Veja um exemplo:

    Create Procedure [dbo].[P_ControlePerdaPorLote] @LoteProducao Char(6), @CodProduto VarChar(3)
    As
    Set NoCount On
    SELECT SubString(Convert(VarChar(7), CodProduto),1,3)+' - '+
               (Select Descricao From Produtos Where Codigo =  SubString(Convert(VarChar(7), CodProduto),1,3)) As "Descrição do Produto",           
               Case
                When SubString(Convert(VarChar(7), CodProduto),1,1)=2 And SubString(Convert(VarChar(7), CodProduto),6,2)=10 Then 'VERDE'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=2 And SubString(Convert(VarChar(7), CodProduto),6,2)=30 Then 'AMARELA'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=2 And SubString(Convert(VarChar(7), CodProduto),6,2)=60 Then 'LARANJA'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=3 Or   SubString(Convert(VarChar(7), CodProduto),1,1)=4   And SubString(Convert(VarChar(7), CodProduto),6,2)=00 Then 'BRANCA'
               End As Cor,              
               Case
                When SubString(Convert(VarChar(7), CodProduto),1,1)=2 And SubString(Convert(VarChar(7), CodProduto),4,1)=1 Then 'P'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=2 And SubString(Convert(VarChar(7), CodProduto),4,1)=2 Then 'M'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=2 And SubString(Convert(VarChar(7), CodProduto),4,1)=3 Then 'G'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=2 And SubString(Convert(VarChar(7), CodProduto),4,1)=4 Then 'XG'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=3 And SubString(Convert(VarChar(7), CodProduto),4,1)=0 Then 'PP'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=3 And SubString(Convert(VarChar(7), CodProduto),4,1)=1 Then 'P'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=3 And SubString(Convert(VarChar(7), CodProduto),4,1)=2 Then 'M'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=3 And SubString(Convert(VarChar(7), CodProduto),4,1)=3 Then 'G'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=4 And SubString(Convert(VarChar(7), CodProduto),4,1)=1 Then '6.0'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=4 And SubString(Convert(VarChar(7), CodProduto),4,1)=2 Then '6.5'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=4 And SubString(Convert(VarChar(7), CodProduto),4,1)=3 Then '7.0'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=4 And SubString(Convert(VarChar(7), CodProduto),4,1)=4 Then '7.5'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=4 And SubString(Convert(VarChar(7), CodProduto),4,1)=5 Then '8.0'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=4 And SubString(Convert(VarChar(7), CodProduto),4,1)=6 Then '8.5'
                When SubString(Convert(VarChar(7), CodProduto),1,1)=4 And SubString(Convert(VarChar(7), CodProduto),4,1)=7 Then '9.0'
               End As Tamanho,              
               CONVERT(CHAR(10), DATAPRODUCAO, 103) AS "Data de Produção",
               SubString(LoteProducao,6,1) As Máquina,
               LOTEINTERNO,
               IsNull(Round(Peso,3),0.000) As Peso,
               Furos=Round(FUROS01 + ISNULL(FUROS03,0.000) + ((FUROS02 + ISNULL(FUROS04,0)) * 
                        (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4))),2),
               Rasgos=Round(RASGO01 + ISNULL(RASGO03,0.000) + (RASGOS02 + ISNULL(RASGO04,0)) * 
                          (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),2),
               Bolhas=Round(Bolha01 + ISNULL(Bolha03,0.000) + (Bolha02 + ISNULL(Bolha04,0)) * 
                         (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),2),
               Bordas=Round(Borda01 + ISNULL(Borda03,0.000) + ((Borda02 + ISNULL(Borda04,0)) * 
                         (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4))),2),
               Sujas=Round(Suja01 + ISNULL(Suja03,0.000) + (Suja02 + ISNULL(Suja04,0)) * 
                        (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),2),
               Outros=Round(Outros01 + ISNULL(Outros03,0.000) + (Outros02 + ISNULL(Outros04,0)) * 
                         (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),2),
               Residuos=Round(Residuos01 + ISNULL(Residuos03,0.000) + (Residuos02 + ISNULL(Residuos04,0)) * 
                            (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),2),
               PorcFuros=Round(FUROS01 + ISNULL(FUROS03,0.000) + ((FUROS02 + ISNULL(FUROS04,0)) * 
                        (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4))),2)*100/Round(Peso,3),
               PorcRasgos=(RASGO01 + ISNULL(RASGO03,0.000) + (RASGOS02 + ISNULL(RASGO04,0)) * 
                                (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)))*100/Round(Peso,3),
               PorcBolhas=(Bolha01 + ISNULL(Bolha03,0.000) + (Bolha02 + ISNULL(Bolha04,0)) * 
                               (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)))*100/Round(Peso,3),
               PorcBordas=(Borda01 + ISNULL(Borda03,0.000) + (Borda02 + ISNULL(Borda04,0)) * 
                                (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)))*100/Round(Peso,3),
               PorcSujas=(Suja01 + ISNULL(Suja03,0.000) + (Suja02 + ISNULL(Suja04,0)) * 
                              (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)))*100/Round(Peso,3),
               PorcOutros=(Outros01 + ISNULL(Outros03,0.000) + (Outros02 + ISNULL(Outros04,0)) * 
                               (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)))*100/Round(Peso,3),
               PorcResiduos=(Residuos01 + ISNULL(Residuos03,0.000) + (Residuos02 + ISNULL(Residuos04,0)) * 
                                  (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)))*100/Round(Peso,3),
    		   SomaTiposPerdas=IsNull(Round(FUROS01 + ISNULL(FUROS03,0.000) + (FUROS02 + ISNULL(FUROS04,0)) * 
                                           (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),3)+
                                      Round(RASGO01 + ISNULL(RASGO03,0.000) + (RASGOS02 + ISNULL(RASGO04,0)) * 
                                           (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),3)+
                                      Round(Bolha01 + ISNULL(Bolha03,0.000) + (Bolha02 + ISNULL(Bolha04,0)) * 
                                           (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),3)+
                                      Round(Borda01 + ISNULL(Borda03,0.000) + (Borda02 + ISNULL(Borda04,0)) * 
                                           (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),3)+
                                      Round(Suja01 + ISNULL(Suja03,0.000) + (Suja02 + ISNULL(Suja04,0)) * 
                                           (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),3)+
                                      Round(Outros01 + ISNULL(Outros03,0.000) + (Outros02 + ISNULL(Outros04,0)) * 
                                           (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),3)+
                                      Round(Residuos01 + ISNULL(Residuos03,0.000) + (Residuos02 + ISNULL(Residuos04,0)) * 
                                           (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),3),0.000),             
    		   SomaPorcTiposPerdas=IsNull(Round(FUROS01 + ISNULL(FUROS03,0.000) + (FUROS02 + ISNULL(FUROS04,0)) * 
                                           (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),3)+
                                      Round(RASGO01 + ISNULL(RASGO03,0.000) + (RASGOS02 + ISNULL(RASGO04,0)) * 
                                           (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),3)+
                                      Round(Bolha01 + ISNULL(Bolha03,0.000) + (Bolha02 + ISNULL(Bolha04,0)) * 
                                           (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),3)+
                                      Round(Borda01 + ISNULL(Borda03,0.000) + (Borda02 + ISNULL(Borda04,0)) * 
                                           (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),3)+
                                      Round(Suja01 + ISNULL(Suja03,0.000) + (Suja02 + ISNULL(Suja04,0)) * 
                                           (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),3)+
                                      Round(Outros01 + ISNULL(Outros03,0.000) + (Outros02 + ISNULL(Outros04,0)) * 
                                           (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),3)+
                                      Round(Residuos01 + ISNULL(Residuos03,0.000) + (Residuos02 + ISNULL(Residuos04,0)) * 
                                           (Select Peso From PesoMedio_Embalagem Where SubString(Grupo,1,4) = SubString(Convert(VarChar(7), CodProduto),1,4)),3),0.000)*100/Round(Peso,3),
               SomaPeso=IsNull((Select Sum(IsNull(Round(Peso,3),0.000)) From CTLuvas 
                                Where LoteProducao=@LoteProducao And SubString(Convert(VarChar(7),CodProduto),1,3)=@CodProduto),0.000),
               MaoDireita=IsNull((Select Sum(IsNull(Round(Peso,3),0.000)) From CTLuvas 
                                Where LoteProducao=@LoteProducao And Mao='D' And SubString(Convert(VarChar(7),CodProduto),1,3)=@CodProduto),0.000),
               MaoEsquerda=IsNull((Select Sum(Round(Peso,3)) From CTLuvas 
                                   Where LoteProducao=@LoteProducao And Mao='E' And SubString(Convert(VarChar(7),CodProduto),1,3)=@CodProduto),0.000),
               SomaPerdaTotalProducao=IsNull((Select IsNull(Round(Quantidade,3),0.000) From Residuos Where LoteProducao = @LoteProducao And Codigo = SubString(Convert(VarChar(7),CodProduto),1,3)),0.000),
               PorcSomaPerdaTotalProducao=IsNull(((Select IsNull(Round(Quantidade,2),0.000) From Residuos 
                                                           Where LoteProducao = @LoteProducao And  Codigo = SubString(Convert(VarChar(7),CodProduto),1,3))*100)/
                                                           (Select Sum(IsNull(Round(Peso,3),0.000)) From CTLuvas Where LoteProducao=@LoteProducao And SubString(Convert(VarChar(7),CodProduto),1,3)=@CodProduto),0.000)
    FROM CTLuvas 
    WHERE LoteProducao = @LoteProducao 
    And     SubString(Convert(Varchar(7), CodProduto),1,3) = @CodProduto
    ORDER BY Maquina, LoteInterno, CodProduto Asc


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    quarta-feira, 5 de dezembro de 2012 18:04