Как поступить в прошлом году неделя к дате и месяц к дате в SQL? - PullRequest
1 голос
/ 09 апреля 2020

Я хочу сравнить WTD и MTD текущего года с WTD и MTD прошлого года. Как я могу приехать в прошлом году WTD и MTD?.

Пример: Если WTD текущего года - с 06-04-2020 по 08-04-2020, то мне нужно сравнить прошлый год с тем же периодом, как 06-04-2019 до 08-04-2019. Точно так же МПД тоже нужно сравнивать. Как указано ниже. Мне нужно проверить любые данные WTD без указания даты и даты.

enter image description here

Любая помощь?

1 Ответ

0 голосов
/ 10 апреля 2020

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

select
    count(case when sale_dt >= dateadd(y,-1,'20200406') and sale_dt < dateadd(y,-1,'20200413') then sale_dt end) prev_year_week 
  , count(case when sale_dt >= '20200406' and sale_dt < '20200413' then sale_dt end) this_year_week
from Mytable
where sale_dt >= '20200406' and sale_dt < '20200413'
or sale_dt >= dateadd(y,-1,'20200406') and sale_dt < dateadd(y,-1,'20200413')

. Вот некоторые примеры данных:

CREATE TABLE [myTable] (
    [myTableID] INTEGER NOT NULL IDENTITY(1, 1),
    [sale_dt] datetime,
    [name] VARCHAR(255) NULL,
    PRIMARY KEY ([myTableID])
);

INSERT INTO myTable([sale_dt],[name]) VALUES('2019-03-26 10:46:33','Oleg'),('2019-03-16 13:50:51','Brett'),('2019-04-05 19:35:43','Lester'),('2019-04-04 19:50:00','Kamal'),('2019-04-07 14:31:08','Finn'),('2019-03-04 22:54:04','Lewis'),('2019-03-27 10:54:45','Paki'),('2019-04-09 01:42:52','Louis'),('2019-04-10 11:19:24','Howard'),('2019-03-16 08:48:36','Felix');
INSERT INTO myTable([sale_dt],[name]) VALUES('2019-04-08 06:25:04','Addison'),('2019-04-04 09:10:06','Armando'),('2019-03-03 23:18:07','Dylan'),('2019-04-16 04:24:12','Austin'),('2019-03-19 13:46:05','Beau'),('2019-03-19 11:31:25','Boris'),('2019-04-19 09:20:29','Berk'),('2019-03-26 17:01:23','Kasper'),('2019-03-23 05:01:06','Hamilton'),('2019-04-06 17:23:07','Channing');
INSERT INTO myTable([sale_dt],[name]) VALUES('2019-03-14 08:38:33','Nasim'),('2019-04-06 12:42:27','Randall'),('2019-03-31 23:33:57','Kasimir'),('2019-04-07 22:11:27','Aquila'),('2019-04-15 21:06:57','Zeph'),('2019-03-12 08:00:01','Salvador'),('2019-04-19 19:12:09','Knox'),('2019-04-04 01:28:42','Chaim'),('2019-03-06 13:40:22','Orlando'),('2019-03-03 19:04:59','Quinlan');
INSERT INTO myTable([sale_dt],[name]) VALUES('2019-04-09 05:06:31','Jin'),('2019-03-03 18:32:56','Nero'),('2019-03-08 17:51:44','Linus'),('2019-04-17 17:40:56','Levi'),('2019-03-13 08:30:53','Dieter'),('2019-03-29 03:42:42','Nehru'),('2019-03-15 17:53:09','Harlan'),('2019-04-13 04:45:21','Ralph'),('2019-03-07 04:21:01','Tobias'),('2019-04-02 19:32:57','Derek');

INSERT INTO myTable([sale_dt],[name]) VALUES('2020-04-04 15:58:48','Holmes'),('2020-04-04 02:49:20','Len'),('2020-04-05 19:56:04','Yasir'),('2020-04-12 09:43:57','Quamar'),('2020-04-12 14:14:29','Dante'),('2020-04-11 08:04:20','Baxter'),('2020-03-31 22:30:12','Odysseus'),('2020-04-03 11:54:33','Levi'),('2020-04-10 21:36:42','Brian'),('2020-04-07 00:18:22','Sawyer');
INSERT INTO myTable([sale_dt],[name]) VALUES('2020-04-08 15:42:30','Hunter'),('2020-04-06 17:50:25','Kenyon'),('2020-03-27 03:20:14','Axel'),('2020-03-31 19:54:39','Trevor'),('2020-03-27 09:10:22','Griffin'),('2020-04-05 18:32:54','Gavin'),('2020-04-09 17:46:47','Oliver'),('2020-04-09 13:52:08','Nasim'),('2020-04-03 09:44:41','Zeus'),('2020-04-01 07:09:49','Kirk');
INSERT INTO myTable([sale_dt],[name]) VALUES('2020-04-01 20:02:11','Benjamin'),('2020-04-06 08:10:22','Rooney'),('2020-04-09 20:56:28','Hunter'),('2020-03-31 09:32:44','Jared'),('2020-04-01 22:20:06','Caesar'),('2020-03-27 18:33:16','Rooney'),('2020-04-12 02:37:09','Brock'),('2020-03-28 12:04:46','Channing'),('2020-04-12 23:41:21','Amery'),('2020-03-25 22:41:15','Brent');

Запустите приведенный выше запрос, чтобы получить следующие данные:

prev_year_week  this_year_week
11              13

Но обратите внимание, что дни недели для 2020-04-06 (понедельник) и 2019-04-06 (сб) не совпадают .

см .: https://rextester.com/LMRC80411 данные получены: https://www.generatedata.com/

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