Ir para conteúdo
FabianoSouza

Tratar campos booleanos e concatenar

Recommended Posts

Vou dividir meu problema em duas etapas para facilitar o entendimento.

 

ETAPA 1

Tenho uns 18 campos booleanos no meu select.

Preciso tratar esses campos para sair um texto mais compreensível.

Para isso geralmente uso CASE WHEN.

Exemplo:

CASE WHEN valeTransp = '1' Then 'Vale-transporte'
WHEN valeTransp = '0' Then ''
END AS 'vt'

Minha primeira dúvida é saber se há uma forma mais prática de se fazer esse tipo de tratamento. Pois são 18 campos!! É muita coisa pra fazer CASE WHEN.

 

 

ETAPA 2

 

Feito o tratamento dos campos, preciso criar uma string com um separador, contendo todas as saídas do tratamento dado acima. Quero que fique algo como:

 

"Vale-transporte, Vale-refeição, Assistência médica, Seguro de vida".

 

(pode sair em formato JSON também)

 

 

Como resolvo essa bronca??

 

Valew!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, vejo algumas soluções.

Case when como está fazendo.

Usar um pivot, segue exemplo:

SELECT  idioma,([1] + [2] + [3]) as TOTAL ,[1] AS 'Básico', [2] AS 'Intermediário',[3] AS 'Avançado'
FROM 
    (SELECT
        idioma,Cod_idioma,Fluencia 
        FROM @table) U
PIVOT (COUNT(Cod_idioma)
        FOR Fluencia IN ([1],[2],[3]) ) P

Ou na minha opinião algo mais simples criar uma tabela e relacionar:

Exemplo:

 

CREATE TABLE dbo.Auxiliares(

id int identity(1,1) primary key,

cod_vt int ,
nome_vt varchar(50),
cod_vr int,
nome_vr varchar(50)

)

-- Faz o inner join dos codigos e usa o campo texto na sua consulta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.