MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    Como usar função Case no SQL

    avatar
    alestonoga
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 4
    Registrado : 05/08/2015

    Como usar função Case no SQL Empty Como usar função Case no SQL

    Mensagem  alestonoga 5/8/2015, 18:47

    Bom dia a todos.
    Trabalho no Access 2010 e o Windows 7 Interprise, Tenho uma consulta de onde retira dados da Tabela T_action e imputo na consulta C_action.
    Quero fazer uma lógica case no SQL desta consulta para operar osvalores que aparecem em sua linha e não consigo. Segue o exemplo: (farei apenas o algoritmo do Case que desejo sem estar na linguagem sql pois não sei)

    SELECT mes, porcentagem, Valor1, Valor2, Valor3
    Caso mes=1
    Porcentagem*Valor1 as Impacto_Jan
    Porcentagem*Valor2 as Impacto_Fev
    Porcentagem*Valor3 as Impacto_Mar
    Caso mes=2
    0 as Impacto_Jan
    Porcentagem*Valor2 as Impacto_Fev
    Porcentagem*Valor3 as Impacto_Mar
    Caso mes=3
    0 as Impacto_Jan
    0 as Impacto_Fev
    Porcentagem*Valor3 as Impacto_Mar
    from T_action

    A idéia central foi criar uma nova coluna na consulta, no caso os impactos, sendo o calculo desta coluna diferente para cada valor do mês.
    Vocês percebem que sou iniciante neste problema, assim se o caminho que sigo não é possível e puder me dar outra alternativa. Sou muito grato e tenham uma boa semana. ATT. ALexandro
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8496
    Registrado : 05/11/2009

    Como usar função Case no SQL Empty Re: Como usar função Case no SQL

    Mensagem  Alexandre Neves 5/8/2015, 19:37

    Boa tarde, e bem-vindo ao fórum
    No SQL da consulta
    SELECT mes, impacto(mes,porcentagem,valor1,valor2,valor3) as ImpactoMes from T_action

    crie função
    function Impacto(mes as byte, porcentagem as double,valor1 as double, valor2 as double, valor3 as double)as double
    select case mes
    Case 1
    impacto=Porcentagem*Valor1
    case 2
    impacto=Porcentagem*Valor2
    Caso mes=3
    impacto=Porcentagem*Valor3
    end select
    end function


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    alestonoga
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 4
    Registrado : 05/08/2015

    Como usar função Case no SQL Empty Re: Como usar função Case no SQL

    Mensagem  alestonoga 5/8/2015, 21:07

    Fiz a função abaixo porém não deu...
    Estou te mandando o exemplo abaixo de como eu quero. As colunas calculadas estão nas colunas impacto 1, 2 e 3 respectivamente. Assim cadastrei, como exemplo 3 registros na tabela  T_action e a conta está em azul, da forma como quero que apareça na consulta, no mesmo formato e numero de colunas. Muito obrigado pela resposta e tenha uma boa noite.

    Mês Percentual Valor1  Valor2       valor3       Impacto1     Impacto2 Impacto3
    1 5%           200           200          200               10           10            10
    2 3%           200           200          200                0             6             6
    3 3%           100            200         100                0              0             3



    SELECT  Mes, Percentual, Valor1, valor2, valor3, Impacto(Mes,Percentual,Valor1,valor2,valor3) as ImpactoMes  FROM T_Action
    Function Impacto(Mes as byte, Percentual as double,Valor1 as double, valor2 as double, valor3 as double) as double
    select case Mes
    Case Mes=1
    impacto=Porcentagem*Valor1
    case Mes=2
    impacto=Porcentagem*Valor2
    Caso Mes=3
    impacto=Porcentagem*Valor3
    end function
    end select;
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8496
    Registrado : 05/11/2009

    Como usar função Case no SQL Empty Re: Como usar função Case no SQL

    Mensagem  Alexandre Neves 5/8/2015, 22:29

    SQL da consulta
    SELECT mes, percentual,valor1,valor2,valor3,impacto(1,mes,porcentagem,valor1,valor2,valor3) as Impacto1,impacto(2,mes,porcentagem,valor1,valor2,valor3) as Impacto2,impacto(3,mes,porcentagem,valor1,valor2,valor3) as Impacto3 from T_action

    Função no módulo
    function Impacto(tipoimpacto as byte,mes as byte, porcentagem as double,valor1 as double, valor2 as double, valor3 as double)as double
    select case tipoimpacto
    case 1
    select case mes
    Case 1
    impacto=Porcentagem*Valor1
    case else
    impacto=0
    end select
    case 2
    select case mes
    Case 1
    impacto=Porcentagem*Valor1
    Case 2
    impacto=Porcentagem*Valor2
    case else
    impacto=0
    end select
    case 3
    select case mes
    Case 1
    impacto=Porcentagem*Valor1
    Case 2
    impacto=Porcentagem*Valor2
    Case 3
    impacto=Porcentagem*Valor3
    end select
    end select


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    alestonoga
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 4
    Registrado : 05/08/2015

    Como usar função Case no SQL Empty Re: Como usar função Case no SQL

    Mensagem  alestonoga 6/8/2015, 15:48

    Primeiramente Alexandre, não tenha palavras para mensurar o quanto sou grato pela sua ajuda. Deu certo!!, fiz mais alguns ajustes em cima da sua idéia, criando uma função valor pois estava multiplicando o percentual pelo valor de apenas um mês para todos os meses. Um grande abraço e a partir de hoje estarei sempre por aqui participando. Segue abaixo como ficou para outros usuários verem:

    No SQL da consulta escrevi:
    SELECT T_action.mes, T_action.[Porcentagem], T_action.valor1, T_action.valor2, T_action.valor3, impacto(1,mes,[Porcentagem],valor1,valor2,valor3) AS Impacto1, impacto(2,mes,[Porcentagem],valor1,valor2,valor3) AS Impacto2, impacto(3,mes,[Porcentagem],valor1,valor2,valor3) AS Impacto3
    FROM T_action;

    No módulo:
    Function impacto(tipoimpacto As Byte, mes As Byte, porcentagem As Double, valor1 As Double, valor2 As Double, valor3 As Double) As Double
    Select Case tipoimpacto
    Case 1
    Select Case mes
    Case 1
    impacto = porcentagem * valor(1, valor1, valor2, valor3)
    Case Else
    impacto = 0
    End Select
    Case 2
    Select Case mes
    Case 1
    impacto = porcentagem * valor(2, valor1, valor2, valor3)
    Case 2
    impacto = porcentagem * valor(2, valor1, valor2, valor3)
    Case Else
    impacto = 0
    End Select
    Case 3
    Select Case mes
    Case 1
    impacto = porcentagem * valor(3, valor1, valor2, valor3)
    Case 2
    impacto = porcentagem * valor(3, valor1, valor2, valor3)
    Case 3
    impacto = porcentagem * valor(3, valor1, valor2, valor3)
    End Select
    End Select
    End Function

    Function valor(mes As Byte, valor1 As Double, valor2 As Double, valor3 As Double) As Double
    Select Case mes
    Case 1
    valor = valor1
    Case 2
    valor = valor2
    Case 3
    valor = valor3
    End Select
    End Function
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8496
    Registrado : 05/11/2009

    Como usar função Case no SQL Empty Re: Como usar função Case no SQL

    Mensagem  Alexandre Neves 6/8/2015, 21:12

    Lembre-se do Resolvido


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Conteúdo patrocinado


    Como usar função Case no SQL Empty Re: Como usar função Case no SQL

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 09:02