Usuário com melhor resposta
Criar períodos na tabela

Pergunta
-
A tabela possui uma coluna data, tenho mais três colunas adjacentes: Semana / Quinzena / Trimestre.
Como fazer para que, á partir da coluna data, seja identificado o range de datas e populado nas colunas Semana, Quinzena ou trimestre, nas respectivas colunas?
Meu conhecimento é o básicão, não sei nem por onde começar.
Grato,
Raimundo
Respostas
-
Boa noite Weivisson, tente o select abaixo, só substituindo o getdate() pela sua coluna de data, utilizei funções proprias do SQL server como o datepart que conseguem capturar periodos de data como semana, mes, dias...
select GETDATE(), -- data datepart(WW,GETDATE()),-- semana do ano quinzena = case when DATEPART(Day,getdate()) <= 15 then 1 else 0 end, -- quinzena do mes primeira ou segunda trimestre = case when DATEPART(MONTH,getdate()) between 1 and 3 then 'trimestre 1' when DATEPART(MONTH,getdate()) between 4 and 6 then 'trimestre 2' when DATEPART(MONTH,getdate()) between 7 and 9 then 'trimestre 3' when DATEPART(MONTH,getdate()) between 10 and 12 then 'trimestre 4' end
Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
- Sugerido como Resposta Alexandre Matayosi terça-feira, 11 de setembro de 2012 22:10
- Marcado como Resposta Weivisson quarta-feira, 12 de setembro de 2012 20:22
-
Não. Se for isso mesmo que você quer, troque este Select por um Update.
Mas rode o Select primeiro para se certificar de que está tudo certo. De que são essas informações que você quer.
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
- Editado Roberson Ferreira _Moderator quarta-feira, 12 de setembro de 2012 12:24
- Marcado como Resposta Weivisson quarta-feira, 12 de setembro de 2012 20:22
-
Amigos resolvi dessa forma, adaptando para as demais sugestões do nosso amigo Alexandre:
UPDATE
dbo.tbl
SET
test_date_quinzena = case when DATEPART(Day,test_date) <= 15 then 1 else 0 end
- Marcado como Resposta Weivisson quarta-feira, 12 de setembro de 2012 20:21
Todas as Respostas
-
Boa noite Weivisson, tente o select abaixo, só substituindo o getdate() pela sua coluna de data, utilizei funções proprias do SQL server como o datepart que conseguem capturar periodos de data como semana, mes, dias...
select GETDATE(), -- data datepart(WW,GETDATE()),-- semana do ano quinzena = case when DATEPART(Day,getdate()) <= 15 then 1 else 0 end, -- quinzena do mes primeira ou segunda trimestre = case when DATEPART(MONTH,getdate()) between 1 and 3 then 'trimestre 1' when DATEPART(MONTH,getdate()) between 4 and 6 then 'trimestre 2' when DATEPART(MONTH,getdate()) between 7 and 9 then 'trimestre 3' when DATEPART(MONTH,getdate()) between 10 and 12 then 'trimestre 4' end
Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
- Sugerido como Resposta Alexandre Matayosi terça-feira, 11 de setembro de 2012 22:10
- Marcado como Resposta Weivisson quarta-feira, 12 de setembro de 2012 20:22
-
-
Não. Se for isso mesmo que você quer, troque este Select por um Update.
Mas rode o Select primeiro para se certificar de que está tudo certo. De que são essas informações que você quer.
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
- Editado Roberson Ferreira _Moderator quarta-feira, 12 de setembro de 2012 12:24
- Marcado como Resposta Weivisson quarta-feira, 12 de setembro de 2012 20:22
-
Bom dia weivisson, este select só irá te mostrar os resultados, para gravar em uma tabela voce teria que fazer um insert ou para atualizar um update.
Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
-
Amigos, tenho pesquisado e testado variações para a query acima e não estou clnkseguindo encaixaro seguinte para as linhas de quinzena e trimestre:
se faço assim retorna valor ok:
select
DATEPART(Day,test_date) from dbo.table
senão retorna:
Invalid column name 'test_date'.
Então não consigo aplicar o select acima para as linhjas de quinzena e trimestre:
quinzena = case when DATEPART(Day,getdate()) <= 15 then 1 else 0 end
quinzena = case when select DATEPART(Day,getdate()) from dbo.table <= 15 then 1 else 0 end
-
Weivisson, voce pode postar todo o seu select para podermos analisar o todo ?
Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
-
Amigos resolvi dessa forma, adaptando para as demais sugestões do nosso amigo Alexandre:
UPDATE
dbo.tbl
SET
test_date_quinzena = case when DATEPART(Day,test_date) <= 15 then 1 else 0 end
- Marcado como Resposta Weivisson quarta-feira, 12 de setembro de 2012 20:21