Aqui está um pouco de um desafio. Estou trabalhando com a tabela ReportServer.Schedule
e existe uma coluna chamada DaysOfWeek
. Posso não estar usando a terminologia adequada aqui, mas este é um número inteiro do qual se pode derivar os dias da semana em que uma assinatura do SSRS está configurada para ser executada. A cada dia é atribuído um número da seguinte forma:
- Domingo: 1
- segunda-feira: 2
- Terça-feira: 4
- Quarta-feira: 8
- Quinta-feira: 16
- Sexta-feira: 32
- sábado: 64
A soma dos dias em que a assinatura está definida para execução é o número nesta coluna. Assim, as assinaturas executadas de segunda a sexta-feira têm um valor nesta coluna de 62
.
O resultado final que desejo é uma exibição que deriva sinalizadores T/F para cada dia com base nesse número, para que eu tenha uma coluna para cada dia. O método que estou explorando atualmente para chegar lá é converter esse número inteiro em base 2 para que eu possa convertê-lo em um varchar e analisar os dias. Neste exemplo, o resultado seria 111110.
A reviravolta final - não tenho a capacidade de criar funções ou procedimentos armazenados neste banco de dados, portanto, minha forte preferência é resolver isso em uma SELECT
instrução ...
(Se o push for forçado, moverei os dados brutos e usarei uma função em um banco de dados separado - e encontrei vários deles online.)
A menos que eu esteja entendendo mal sua pergunta, o T-SQL abaixo deve fazer isso (informe-me se não é isso que você está procurando). Ele utiliza operadores bit a bit para extrair as máscaras de bits dos dias:
Como você não pode criar um procedimento armazenado de função, você pode ingressar em uma tabela de pesquisa na memória :)