none
Union 2 - Resultado RRS feed

Respostas

  • SELECT
         A.Chapa   
        ,A.Nome
        ,[1001] = SUM(CASE A.CodEvento WHEN 1001 THEN A.Valor ELSE NULL END)
        ,[1011] = SUM(CASE A.CodEvento WHEN 1011 THEN A.Valor ELSE NULL END)
        ,[1015] = SUM(CASE A.CodEvento WHEN 1015 THEN A.Valor ELSE NULL END)
        ,[1019] = SUM(CASE A.CodEvento WHEN 1019 THEN A.Valor ELSE NULL END)
        ,A.[MES CAIXA]
        ,A.[SECAO$]
    FROM
    (
    
    SELECT P.CHAPA,
           P.NOME,
           P1.CODEVENTO,
           P1.VALOR,
           DATEPART(MONTH,P1.DTPAGTO) AS [MES CAIXA],
           PS.DESCRICAO AS [SECAO$]
    FROM PFFINANC AS P1
    LEFT JOIN PFUNC AS P ON P.CODCOLIGADA = P1.CODCOLIGADA AND P.CHAPA = P1.CHAPA
    LEFT JOIN PSECAO AS PS ON PS.CODCOLIGADA = P.CODCOLIGADA AND PS.CODIGO = P.CODSECAO
    WHERE P1.ANOCOMP = '2009'  AND  DATEPART(MONTH,P1.DTPAGTO) = '10'
    AND (P1.CODEVENTO IN ('1001','1015','1019') or (P1.CODEVENTO ='1011' and p.codsituacao = 'D'))
    
    
    UNION ALL
    
    SELECT F.CHAPA,
           P.NOME,
           F.CODEVENTO ,
           F.VALOR,
           DATEPART(MONTH,PF.DTPAGTO)  AS [MES CAIXA],
           PS.DESCRICAO AS [SECAO$]
    FROM PFFERIAS AS F
    INNER JOIN PFPERFER AS PF ON PF.CODCOLIGADA = F.CODCOLIGADA AND PF.CHAPA = F.CHAPA AND PF.DTVENCIMENTO = F.DTVENCIMENTO 
    AND PF.NROPERIODO = F.NROPERIODO
    INNER JOIN PFUNC AS P ON P.CODCOLIGADA =  PF.CODCOLIGADA AND P.CHAPA = PF.CHAPA
    INNER JOIN PSECAO AS PS ON PS.CODCOLIGADA = P.CODCOLIGADA AND PS.CODIGO = P.CODSECAO
    WHERE F.CODEVENTO = '1011' AND  DATEPART(MONTH,PF.DTPAGTO) ='10' AND DATEPART(YEAR,PF.DTPAGTO)= '2009'
    ORDER BY  PS.DESCRICAO ,P.NOME
    
    ) AS A
    GROUP BY
        A.Chapa, A.Nome,A.[MES CAIXA],A.[SECAO$]
    
    tente assim...


    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    • Marcado como Resposta Ronnie Von sexta-feira, 27 de novembro de 2009 17:42
    sexta-feira, 27 de novembro de 2009 17:08

Todas as Respostas

  • Nenhum resultado???? Você talvez esteja procurando algo como o EXCEPT ou INTERSECT ????

    http://msdn.microsoft.com/en-us/library/ms188055.aspx


    Tks. Fausto Fiorese Branco DBA - SQL Server 2k5 São Paulo - Brasil * http://www.linkedin.com/in/faustobranco
    sexta-feira, 27 de novembro de 2009 13:45
  • Ronnie,

    o que vc deseja é pivotar algumas linhas?
    de uma olha em pivot tables (mas no seu caso terá que ser dinamico, a menos que codigo evento sempre seja 1001 e 1011)

    ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/udb9/html/24ba54fc-98f7-4d35-8881-b5158aac1d66.htm

    att.
    Marcelo Fernandes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    sexta-feira, 27 de novembro de 2009 14:43
    Moderador
  • Marcelo esse codigos serao sempre fixos mesmo
    vou tentar olhar algo sobre a sua sugestao
    sexta-feira, 27 de novembro de 2009 15:46
  • Ronnie segue exemplo:

    DECLARE @tb TABLE 
    (Chapa     CHAR(6), 
     Nome      VARCHAR(80), 
     CodEvento INT, 
     Valor     MONEY, 
     MesCaixa  INT, 
     Secao     VARCHAR(80))
    
    
    
    INSERT @tb
    SELECT '007786','HUMBERTO SARMENTO'      ,1001,  34.62, 10, 'CONSERVA SEAG COLATINA' UNION
    SELECT '007786','HUMBERTO SARMENTO'      ,1011, 140.09, 10, 'CONSERVA SEAG COLATINA' UNION
    SELECT '009990','MARCIO LUIS DA SILVEIRA',1001, 752.19, 10, 'CONSERVA SEAG COLATINA' UNION
    SELECT '009526','ANA MARCIA SALERA MOTA' ,1001,  93.08, 10, 'ESCRITORIO CENTRAL'     UNION
    SELECT '009099','ANA PAULA BRASIL CANUTO',1001,  56.63, 10, 'ESCRITORIO CENTRAL' 
    
    
    
    
    SELECT
         Chapa   
        ,Nome
        ,[1001] = sum(CASE CodEvento WHEN 1001 THEN Valor ELSE NULL END)
        ,[1011] = sum(CASE CodEvento WHEN 1011 THEN Valor ELSE NULL END)
        ,[1015] = sum(CASE CodEvento WHEN 1015 THEN Valor ELSE NULL END)
        ,[1019] = sum(CASE CodEvento WHEN 1019 THEN Valor ELSE NULL END)
        ,MesCaixa    
        ,Secao
    FROM
        (SELECT Chapa, Nome, CodEvento, Valor, MesCaixa, Secao FROM @tb) AS A
    GROUP BY
        Chapa, Nome, MesCaixa, Secao
    
    

    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    • Sugerido como Resposta William John Adam Trindade sexta-feira, 27 de novembro de 2009 16:15
    • Marcado como Resposta Ronnie Von sexta-feira, 27 de novembro de 2009 17:42
    • Não Marcado como Resposta Ronnie Von quinta-feira, 24 de março de 2011 12:11
    sexta-feira, 27 de novembro de 2009 16:01
  • Boa Leonardo...

    tinha pensando em uma outra solucao com xml, mas esta é bem pratica.


    att.
    Marcelo Fernandes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    sexta-feira, 27 de novembro de 2009 16:06
    Moderador
  • SELECT
         A.Chapa   
        ,A.Nome
        ,[1001] = SUM(CASE A.CodEvento WHEN 1001 THEN A.Valor ELSE NULL END)
        ,[1011] = SUM(CASE A.CodEvento WHEN 1011 THEN A.Valor ELSE NULL END)
        ,[1015] = SUM(CASE A.CodEvento WHEN 1015 THEN A.Valor ELSE NULL END)
        ,[1019] = SUM(CASE A.CodEvento WHEN 1019 THEN A.Valor ELSE NULL END)
        ,A.[MES CAIXA]
        ,A.[SECAO$]
    FROM
    (
    
    SELECT P.CHAPA,
           P.NOME,
           P1.CODEVENTO,
           P1.VALOR,
           DATEPART(MONTH,P1.DTPAGTO) AS [MES CAIXA],
           PS.DESCRICAO AS [SECAO$]
    FROM PFFINANC AS P1
    LEFT JOIN PFUNC AS P ON P.CODCOLIGADA = P1.CODCOLIGADA AND P.CHAPA = P1.CHAPA
    LEFT JOIN PSECAO AS PS ON PS.CODCOLIGADA = P.CODCOLIGADA AND PS.CODIGO = P.CODSECAO
    WHERE P1.ANOCOMP = '2009'  AND  DATEPART(MONTH,P1.DTPAGTO) = '10'
    AND (P1.CODEVENTO IN ('1001','1015','1019') or (P1.CODEVENTO ='1011' and p.codsituacao = 'D'))
    
    
    UNION ALL
    
    SELECT F.CHAPA,
           P.NOME,
           F.CODEVENTO ,
           F.VALOR,
           DATEPART(MONTH,PF.DTPAGTO)  AS [MES CAIXA],
           PS.DESCRICAO AS [SECAO$]
    FROM PFFERIAS AS F
    INNER JOIN PFPERFER AS PF ON PF.CODCOLIGADA = F.CODCOLIGADA AND PF.CHAPA = F.CHAPA AND PF.DTVENCIMENTO = F.DTVENCIMENTO 
    AND PF.NROPERIODO = F.NROPERIODO
    INNER JOIN PFUNC AS P ON P.CODCOLIGADA =  PF.CODCOLIGADA AND P.CHAPA = PF.CHAPA
    INNER JOIN PSECAO AS PS ON PS.CODCOLIGADA = P.CODCOLIGADA AND PS.CODIGO = P.CODSECAO
    WHERE F.CODEVENTO = '1011' AND  DATEPART(MONTH,PF.DTPAGTO) ='10' AND DATEPART(YEAR,PF.DTPAGTO)= '2009'
    ORDER BY  PS.DESCRICAO ,P.NOME
    
    ) AS A
    GROUP BY
        A.Chapa, A.Nome,A.[MES CAIXA],A.[SECAO$]
    
    tente assim...


    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    • Marcado como Resposta Ronnie Von sexta-feira, 27 de novembro de 2009 17:42
    sexta-feira, 27 de novembro de 2009 17:08
  • Ola leonardo, esta me ajudando demais, pode ter certeza,
    rodei a sua sentença e me retornou essa mensagem de erro

    Msg 1033, Level 15, State 1, Line 42
    The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified.

    Obrigado

    sexta-feira, 27 de novembro de 2009 17:17
  • ops, tire o order by q esta na subquery
    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    sexta-feira, 27 de novembro de 2009 17:18
  • Perfeito Leonardo, era isso que mesmo que estava precisando, Parabens e Muito obrigado pela Disposição

    sexta-feira, 27 de novembro de 2009 17:42
  • VALEU RONNIE.
    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    sexta-feira, 27 de novembro de 2009 17:51