none
Case em Where RRS feed

  • Pergunta

  • Boa tarde pessoal!

    Estava desenvolvendo um relatório  para o SAP B1, que trabalha com consultas SQL. Uma de suas funções, é permitir que o usuário impute um valor de parâmetro para filtragem no ato da geração do relatório. Ou seja, ele escolhe a valor do campo de where na geração do relatório.

    Durante o desenvolvimento, tive a necessidade de usar CASE para criar uma coluna e, gostaria de usar os valores retornados nesta coluna como parâmetro no where.

    A consulta está assim:

    Declare

    @pro Char(30) = 'PROPRIETÁRIO',

    @asp Char(30) = 'ASPIRANTE',

    @juv Char(30) = 'JUVENIL',

    @vef Char(30) = 'VETERANO EFETIVO',

    @vvi Char(30) = 'VETARANO VINCULADO';

    SELECT

    *, DATEDIFF(Month, T0.U_DTNASC, GETDATE())/12 As 'Idade', DATEDIFF(Month, T0.U_DTADM, GETDATE())/12 As 'Contribuição',

    T0.[U_ICBCATSOCIO] As 'Categoria', Case When DATEDIFF(Month, T0.U_DTNASC, GETDATE())/12 >= '16' and DATEDIFF(Month, T0.U_DTNASC, GETDATE())/12 <= 21 Then @juv When DATEDIFF(Month, T0.U_DTNASC, GETDATE())/12 > '21' and DATEDIFF(Month, T0.U_DTNASC, GETDATE())/12 <= 25 Then @asp When DATEDIFF(Month, T0.U_DTADM, GETDATE())/12 >= '40' and DATEDIFF(Month, T0.U_DTNASC, GETDATE())/12 >= 65 Then @vef When DATEDIFF(Month, T0.U_DTADM, GETDATE())/12 >= '30' Then @vvi When DATEDIFF(Month, T0.U_DTNASC, GETDATE())/12 > '25' Then @pro Else '' End As 'APTO' FROM OCRD T0


    
    

    A consulta é pra verificar, na data na geração do relatório, quem está apto a mudar de categoria.

    No SAP, se eu digo:

    "Where Categoria = [%0]" - Na execução do relatório, será solicitado que se escolha um dos valores contidos em Categoria;

    O que eu preciso é que "[%0]" exija um valor de 'APTO' (No caso, um dos resultados do CASE)

    É possível?

    Desde já, agradeço.

    sexta-feira, 12 de junho de 2015 19:41

Respostas

Todas as Respostas