Este artigo descreve como criar tabela calendário no SQL Server utilizando a função DATEPART .
DATEPART é uma função que retorna o dia, semana, mês e ano de uma data específica.
--- Leia o cenário ---
Eu tenho uma tabela SQL com a data de aquisição do produto.
Porém, eu preciso obter outras informações relevantes como o dia, semana, mês e ano para utilizar como filtro nas minhas análises. Como não tenho essas colunas , eu preciso criar.
Para cenários como este, eu costumo usar o DATEPART , que é uma função que permite criar a "tabela calendário" dentro do banco de dados.
Particularmente, eu prefiro criar no Banco de Dados do que na ferramenta analítica como Power BI, por exemplo. Por causa da preocupação com a performance do relatório.
Também , utilizei o comando [ CASE WHEN ] para obter o nome do mês. É uma ótima maneira de melhorar a qualidade nos dados.
***************** Salve o Script *****************
SELECT
Para cenários como este, eu costumo usar o DATEPART , que é uma função que permite criar a "tabela calendário" dentro do banco de dados.
Particularmente, eu prefiro criar no Banco de Dados do que na ferramenta analítica como Power BI, por exemplo. Por causa da preocupação com a performance do relatório.
Também , utilizei o comando [ CASE WHEN ] para obter o nome do mês. É uma ótima maneira de melhorar a qualidade nos dados.
***************** Salve o Script *****************
SELECT
PRODUTO,
QUANTIDADE AS QTD,
PRECO_UNIT,
VALOR_TOTAL,
DATA_AQUISICAO,
DATEPART(DAY,DATA_AQUISICAO) DIA, -- PARA OBTER O DIA
DATEPART(WEEK,DATA_AQUISICAO) Nº_DA_SEMANA,-- PARA OBTER O NUMERO DA SEMANA NO ANO
DATEPART(MONTH,DATA_AQUISICAO) Nº_MES, -- PARA OBTER O NÚMERO DO MES
DATEPART(YEAR,DATA_AQUISICAO) ANO, -- PARA OBTER O ANO
CASE
WHEN DATEPART(MONTH,DATA_AQUISICAO)=1 THEN 'JANEIRO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=2 THEN 'FEVEREIRO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=3 THEN 'MARÇO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=4 THEN 'ABRIL'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=5 THEN 'MAIO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=6 THEN 'JUNHO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=7 THEN 'JULHO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=8 THEN 'AGOSTO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=9 THEN 'SETEMBRO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=10 THEN 'OUTUBRO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=11 THEN 'NOVEMBRO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=12 THEN 'DEZEMBRO'
ELSE '' END NOME_MES
QUANTIDADE AS QTD,
PRECO_UNIT,
VALOR_TOTAL,
DATA_AQUISICAO,
DATEPART(DAY,DATA_AQUISICAO) DIA, -- PARA OBTER O DIA
DATEPART(WEEK,DATA_AQUISICAO) Nº_DA_SEMANA,-- PARA OBTER O NUMERO DA SEMANA NO ANO
DATEPART(MONTH,DATA_AQUISICAO) Nº_MES, -- PARA OBTER O NÚMERO DO MES
DATEPART(YEAR,DATA_AQUISICAO) ANO, -- PARA OBTER O ANO
CASE
WHEN DATEPART(MONTH,DATA_AQUISICAO)=1 THEN 'JANEIRO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=2 THEN 'FEVEREIRO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=3 THEN 'MARÇO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=4 THEN 'ABRIL'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=5 THEN 'MAIO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=6 THEN 'JUNHO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=7 THEN 'JULHO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=8 THEN 'AGOSTO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=9 THEN 'SETEMBRO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=10 THEN 'OUTUBRO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=11 THEN 'NOVEMBRO'
WHEN DATEPART(MONTH,DATA_AQUISICAO)=12 THEN 'DEZEMBRO'
ELSE '' END NOME_MES
FROM dbo.ESTOQUE
#powerbi #sql #nosql #analistadedados #engenhariadedados #dicadodia #linkedinbrasil #sqlserver
Comentários
Postar um comentário