Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

×

Informação importante

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