Я использую SQL Server 2008 R2 (окончательная первоначальная версия).
У меня есть SQL-запрос, который запрашивает даты, продукты, клиентов и единицы:
select
[Transaction Date] as Date,
[SKU] as Product,
[Customer Name] as Customer,
sum(Qty) as Units
from dataset
where [Transaction Date] < '2019-03-01' and [Transaction Date] >= '2016-01-01'
group by [Transaction Date], [SKU], [Customer Name]
order by [Transaction Date]
Это тянет сотни тысяч записей, и я хотел определить, была ли определенная транзакция новым заказом или переупорядочением, основываясь на следующей логике:
Изменение порядка: конкретный клиент заказал этот конкретный продукт за последние 6 месяцев
Новый заказ: этот конкретный клиент не заказывал этот конкретный продукт в течение последних 6 месяцев
Для этого у меня есть эта формула в Excel, которая, кажется, работает:
=IF(COUNTIFS(A$1:A1,">="&DATE(YEAR(A2),MONTH(A2)-6,DAY(A2)),C$1:C1,C2,B$1:B1,B2),"Reorder","New Order")
Формула работает, когда я вставляю ее по отдельности или в меньший набор данных, но когда я пытаюсь скопировать и вставить ее во все строки размером 500K +, Excel сдается, потому что она повторяется для каждого вычисления.
Скорее всего, это можно сделать в SQL, но у меня нет знаний о том, как преобразовать эту формулу Excel в SQL, я только начал изучать ее.