Запрос на недельную транзакцию - PullRequest
0 голосов
/ 14 июля 2020

В настоящее время я создаю функцию, которая может возвращать свою неделю на основе даты таблицы транзакций, но как я могу применить диапазон, в котором дата:

Если первый день месяца выпадает на Со вторника по субботу, затем

07/01/2020 - 07/12/2020 = Week 1,
07/13/2020 - 07/19/2020 = Week 2,
07/20/2020 - 07/26/2020 = Week 3,
07/27/2020 - 07/31/2020 = Week 4

, а когда 1-й день месяца выпадает на понедельник или воскресенье, возврат должен быть

06/01/2020 - 06/07/2020 = Week 1,
06/08/2020 - 06/14/2020 = Week 2,
06/15/2020 - 06/21/2020 = Week 3,
06/22/2020 - 06/30/2020 = Week 4

Заранее спасибо.

1 Ответ

0 голосов
/ 14 июля 2020

У вас есть другой способ классификации недели в зависимости от дня начала месяца.

вы можете go для ниже IF ELSE logi c.

DECLARE @transactionDate date = '2020-07-12'
DECLARE @WeekName VARCHAR(30)

IF (datename(weekday,dateadd(day,1,EOMONTH(@transactionDate,-1)))) IN ('Sunday','Monday')
BEGIN
SET @WeekName = (SELECT  CASE WHEN DATEPART(day,@transactionDate) BETWEEN 1 AND 12 THEN 'Week 1'
            WHEN DATEPART(day,@transactionDate) BETWEEN 13 AND 19 THEN 'Week 2'
             WHEN DATEPART(day,@transactionDate) BETWEEN 20 AND 26 THEN 'Week 3'
             WHEN DATEPART(day,@transactionDate) BETWEEN 27 AND 31 THEN 'Week 4' END )
END
ELSE
BEGIN
SET @WeekName = (SELECT  CASE WHEN DATEPART(day,@transactionDate) BETWEEN 1 AND 7 THEN 'Week 1'
            WHEN DATEPART(day,@transactionDate) BETWEEN 8 AND 14 THEN 'Week 2'
             WHEN DATEPART(day,@transactionDate) BETWEEN 15 AND 21 THEN 'Week 3'
             WHEN DATEPART(day,@transactionDate) BETWEEN 22 AND 31 THEN 'Week 4' END 
             )
END 

SELECT @WeekName

2 неделя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...