Я хотел бы узнать, какие покупки совершаются за 2 финансовых года ( 16-17 ФГ и 17-18 ФГ ).
Для этого:
OwnerID: 101 , первая покупка в 2014 году с 3 покупками в 17-18 финансовом году.
OwnerID: 102 , первая покупка в 2011 году с 1 покупкой в 16-17 финансовых годах, 1 покупкой в 17-18 финансовом году.
OwnerID: 103 , первая покупка в 2017 году, однако не следует рассматривать , поскольку он является новым клиентом, у которого только 1 покупка в 17-18 финансовых годах. (т. е. первая покупка не учитывается, если новый клиент )
OwnerID: 104 , первая покупка в 2016 году, но еще 3 покупки были совершены в 16-17 финансовых годах.
Код:
CREATE TABLE Test
(
OwnerID INT,
ProductID VARCHAR(255),
PurchaseDate DATE
);
INSERT INTO Test (OwnerID, ProductID, PurchaseDate)
VALUES (101, 'P2', '2014-04-03'), (101, 'P9', '2017-08-09'),
(101, 'P11', '2017-10-05'), (101, 'P12', '2018-01-15'),
(102, 'P1', '2011-06-02'), (102, 'P3', '2016-06-03'),
(102, 'P10', '2017-09-01'),
(103, 'P8', '2017-06-23'),
(104, 'P4', '2016-12-17'), (104, 'P5', '2016-12-18'),
(104, 'P6', '2016-12-19'), (104, 'P7', '2016-12-20');
Желаемый вывод:
FY16-17 FY17-18
-----------------
5 4
Я попытался выполнить приведенный ниже запрос, чтобы получить записи, которые не встречаются в первый раз и были получены путем подсчета в течение финансовых лет:
SELECT *
FROM
(SELECT
ROW_NUMBER() OVER(PARTITION BY OwnerID ORDER BY PurchaseDate) AS OCCURANCE
FROM Test
GROUP BY OwnerID, PurchaseDate)
WHERE
OCCURANCE <> 1
Однако выдает ошибку:
Сообщение 102, Уровень 15, Состояние 1, Строка 5
Неверный синтаксис рядом с ')'.