Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Tenho um campo que é uma DATA, supondo que venha no resultado dia 16/03/2022, que é uma QUARTA, eu preciso transformar essa data na próxima SEGUNDA FEIRA(21/03/2022), e todas as datas de um certo cliente tenho que converter pra próxima segunda feira, é possível?
Creio que você consiga fazer da seguinte forma:
Teste:
LOAD
*,
WeekDay(NovaData) AS DiaSemanaNovaData;
LOAD
Cod,
data,
WeekDay(data) as DiaSemana,
If(num(weekday(data)) = 0, data+1,Date((data + 7) - (num(weekday(data))) + 1)) as NovaData
FROM [lib://AttachedFiles/TesteData.xlsx]
(ooxml, embedded labels, table is Planilha1);
Resultado:
Segue a planilha que usei para testar.
Edit: Corrigindo problema caso o dia da semana dê em um domingo.
Não sei se entendi a pergunta, mas supondo que você queira mudar apenas as datas dos clientes "A" dentro da base anexada, uma das formas de fazer é a seguinte:
iF(Cliente = 'A',
If(num(weekday(data)) = 0, data+1,Date((data + 7) - (num(weekday(data))) + 1)),
Date(data)) as NovaData
Traduzindo,
Se o cliente for igual a "A"
Então a operação será realizada(Jogaremos todos para a próxima segunda feira)
Senão a operação não será realizada, logo, continuará com o mesmo valor de antes.
Portanto, o resultado será o seguinte:
Caso a sua regra inclua mais de um campo (Por exemplo, uma combinação entre Cliente e Cidade), sugiro que antes de iniciar a transformação citada acima, você transforme essa combinação em apenas um campo com o objetivo de diminuir o número de operações lógicas e de operadores relacionais.
Creio que você consiga fazer da seguinte forma:
Teste:
LOAD
*,
WeekDay(NovaData) AS DiaSemanaNovaData;
LOAD
Cod,
data,
WeekDay(data) as DiaSemana,
If(num(weekday(data)) = 0, data+1,Date((data + 7) - (num(weekday(data))) + 1)) as NovaData
FROM [lib://AttachedFiles/TesteData.xlsx]
(ooxml, embedded labels, table is Planilha1);
Resultado:
Segue a planilha que usei para testar.
Edit: Corrigindo problema caso o dia da semana dê em um domingo.
Entendi, dá certo mesmo! Mas me responde algo, preciso limitar a partir de um outro campo quais datas serão convertidas pra segunda feira, sabe dizer como ficaria a sintaxe?
Não sei se entendi a pergunta, mas supondo que você queira mudar apenas as datas dos clientes "A" dentro da base anexada, uma das formas de fazer é a seguinte:
iF(Cliente = 'A',
If(num(weekday(data)) = 0, data+1,Date((data + 7) - (num(weekday(data))) + 1)),
Date(data)) as NovaData
Traduzindo,
Se o cliente for igual a "A"
Então a operação será realizada(Jogaremos todos para a próxima segunda feira)
Senão a operação não será realizada, logo, continuará com o mesmo valor de antes.
Portanto, o resultado será o seguinte:
Caso a sua regra inclua mais de um campo (Por exemplo, uma combinação entre Cliente e Cidade), sugiro que antes de iniciar a transformação citada acima, você transforme essa combinação em apenas um campo com o objetivo de diminuir o número de operações lógicas e de operadores relacionais.