Mam podzbiór R2 tabeli SQL Server 2008 jak poniżej:Tabela rankingowa na jednej kolumnie podczas sortowania na innej
cust_id | prod_id | day | price
--------+---------+-----+-------
137656 194528 42373 9.11
137656 194528 42374 9.11
137656 194528 42375 9.61
137656 194528 42376 9.61
137656 194528 42377 9.11
137656 194528 42378 9.11
muszę uporządkować różne okresy cena tak:
cust_id | prod_id | day | price | rank
--------+---------+-----+-------+------
137656 194528 42373 9.11 1
137656 194528 42374 9.11 1
137656 194528 42375 9.61 2
137656 194528 42376 9.61 2
137656 194528 42377 9.11 3
137656 194528 42378 9.11 3
, aby sortować według cust_id
, prod_id
i day
rosnąco, ale zwiększa jej pozycję, gdy cena się zmieni. Próbowałem użyć DENSE_RANK()
takiego:
SELECT
cust_id, prod_id, [day], price,
DENSE_RANK() OVER (ORDER BY cust_id, prod_id, price)
FROM
@prices
ta zwraca coś takiego:
cust_id | prod_id | day | price | rank
--------+---------+-----+-------+------
137656 194528 42373 9.11 1
137656 194528 42374 9.11 1
137656 194528 42377 9.11 1
137656 194528 42378 9.11 1
137656 194528 42375 9.61 2
137656 194528 42376 9.61 2
Oczywiście wyłączając dzień od rodzaju dadzą mi te wyniki, ale ilekroć to dzień w kolejności od sekcja DENSE_RANK()
- to po prostu rozdziela każdy nowy dzień jako nowy ID ...
Czy ktoś ma jakieś pomysły na to, jak to powinno działać? Wdzięczni za wszelkie rady i może dać więcej informacji, jeśli wymagane
Tak jak w notatce, próbowałem użyć [różnica w metoda numeru wiersza] (http://rextester.com/COMB14371), ale nie udało się, więc prawdopodobnie nie jest to dobre podejście. –
jaka będzie pozycja po zmianie identyfikatora cust_id lub prod_id? byłoby lepiej, gdyby dodać to również w swojej próbce. –