Jump to content
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!

 

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.