none
Sum dados da coluna (x) com "Filtro" da coluna (y) RRS feed

  • Pergunta

  • Boas,

    sou novo em querys de ACCESS/SQL e preciso da vossa ajuda para transformar esta tabela:

    DATA    |CHEFE         |ASSISTENTE        |Tipo               |Motivo                  | Tempo

    01/02   |A                 | Andre                 |credito          | a                          | 01:00

    01/02   |A                 | Andre                 |débito           | b                          | 01:00

    01/02   |A                 | Pedro                 |credito          | a                          | 03:00

    01/02   |A                 | Pedro                 |débito           | a                          | 01:00

    01/02   |A                 | Pedro                 |credito          | a                          | 03:00

    em:

    |CHEFE         |ASSISTENTE        |sum tempo debito           |sum tempo credito                | Diferença

    A                  |André                  | 01:00                              | 01:00                                   | 00:00

    A                  |Pedro                  | 01:00                              | 06:00                                   | 05:00

    obg!!!

    segunda-feira, 25 de fevereiro de 2013 17:52

Respostas

Todas as Respostas

  • Suspiro,

    Essa coluna Tempo é um varchar? Qual a versão do SQL Server utilizada? 

    segunda-feira, 25 de fevereiro de 2013 18:26
  • Acredito que desta forma irá te ajudar...


    Select
    	CHEFE
    	,ASSISTENTE
    	,SUM(CASE TIPO WHEN 'débito' THEN Tempo ELSE 0 END) AS 'sum tempo débito'
    	,SUM(CASE TIPO WHEN 'credito' THEN Tempo ELSE 0 END) AS 'sum tempo credito'
    	,SUM(CASE TIPO WHEN 'credito' THEN Tempo ELSE 0 END)-SUM(CASE TIPO WHEN 'débito' THEN Tempo ELSE 0 END) AS 'Diferença'
    from tabela
    Group By CHEFE, ASSISTENTE


    • Sugerido como Resposta Caio Morais segunda-feira, 25 de fevereiro de 2013 19:09
    segunda-feira, 25 de fevereiro de 2013 19:08
  • antes de mais tks pela ajuda...

    Caio... utilizando esta query gera o erro:

    Syntax error (missing operator) in query  expression 'Sum(CASE Tipo When 'crédito' THEN Tempo ELSE 0 END)'

    de referir que a query está a ser feita em access - SQL...

    tks!

    segunda-feira, 25 de fevereiro de 2013 23:11
  • Ja consegui resolver no access com outra tabela agora vou aplicar para esta mas.... nem tudo é um mar de rosa... lol

    o resultado da diferença, sempre que a hora for negativa, não me mostra o sinal "-" antes da hora...

    para mostrar o "-" nesta parte teria que fazer mais alguma coisa?

    SUM(CASE TIPO WHEN 'credito' THEN Tempo ELSE 0 END)-SUM(CASE TIPO WHEN 'débito' THEN Tempo ELSE 0 END) AS 'Diferença'

    por exemplo:

    um assistente tem mais horas em debito que em crédito... 4 horas em debito e 1 em crédito... o total seria -3hrs.

    ele assume as 3hrs mas nao assume o "-" :(

    terça-feira, 26 de fevereiro de 2013 01:30
  • Crie uma function que retorne um varchar(6) aonde verifica se o 'credito' é maior que o 'debito', se não for maior, retorna '-'+cast((debito-credito) as varchar).

    Acho que da para usar desta forma.

    terça-feira, 26 de fevereiro de 2013 12:07
  • Já pode finalizar fórum?
    quarta-feira, 27 de março de 2013 20:18
  • Deleted
    domingo, 31 de março de 2013 19:31
  • Suspiro,

    Isso é normal de acontecer pois você esta trabalhando com valores do tipo inteiro e por padrão o sinal de negativo é suprimido, isso ocorrer de forma clássica no Excel.


    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]

    terça-feira, 2 de abril de 2013 16:49
  • Deleted
    • Marcado como Resposta Giovani Cr quarta-feira, 9 de outubro de 2013 18:24
    terça-feira, 2 de abril de 2013 20:35