Вот пример данных, для которых я пытаюсь найти все заказы с одинаковыми количествами, игнорируя столбец OrderID
Product Location Customer OrderID Quantity
Eggs Chicago XYZ 2011 10
Eggs Chicago XYZ 2012 10
Eggs Chicago XYZ 2013 15
Итак, я использовал функцию DENSE_RANK в SQL
Select Product,Location,Customer,OrderID,Quantity,
Ranking = DENSE_RANK() OVER (PARTITION BY Product,Location,Customer,Quantity
ORDER BY OrderID ASC)
FROM MyTable
чтобы получить данные ниже
Product Location Customer OrderID Quantity Ranking
Eggs Chicago XYZ 2011 10 1
Eggs Chicago XYZ 2012 10 2
Eggs Chicago XYZ 2013 15 1
Итак, на основании ранжирования я смог отфильтровать записи с одинаковым количеством по разным идентификаторам заказов и обработать их как единое целое.
Пока все хорошо и я счастлив. Но, еще одно сумасшедшее требование - эта форма агрегации должна быть сделана только для первого изменения количества. Например, если приведенные выше данные похожи на приведенные ниже
Product Location Customer OrderID Quantity
Eggs Chicago XYZ 2011 10
Eggs Chicago XYZ 2012 10
Eggs Chicago XYZ 2013 15
Eggs Chicago XYZ 2014 15
Eggs Chicago XYZ 2015 15
Тот же SQL выдаст результат
Product Location Customer OrderID Quantity Ranking
Eggs Chicago XYZ 2011 10 1
Eggs Chicago XYZ 2012 10 2
Eggs Chicago XYZ 2013 15 1
Eggs Chicago XYZ 2013 15 2
Eggs Chicago XYZ 2013 15 3
Но мне нужно, чтобы результат был
Product Location Customer OrderID Quantity Ranking
Eggs Chicago XYZ 2011 10 1
Eggs Chicago XYZ 2012 10 2
Eggs Chicago XYZ 2013 15 1
Eggs Chicago XYZ 2013 15 1
Eggs Chicago XYZ 2013 15 1
Пожалуйста, обратите внимание, что рейтинг остается 1 для всех записей после первого изменения количества.
Можно ли настроить мой SQL, чтобы получить описанное выше поведение?
Спасибо за любые предложения.