habe ich eine Teilmenge einer SQL Server 2008 R2 Tabelle wie folgt aus:Rang Tabelle auf eine Spalte, während das Sortieren auf einem anderen
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
Ich brauche die unterschiedlichen Preisperioden wie so Rang:
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
so dass es sortiert nach cust_id
, prod_id
und day
aufsteigend aber erhöht den Rang, wenn die Preisänderungen. Ich habe versucht, DENSE_RANK()
wie folgt zu verwenden:
SELECT
cust_id, prod_id, [day], price,
DENSE_RANK() OVER (ORDER BY cust_id, prod_id, price)
FROM
@prices
Das gibt so etwas wie:
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
Offensichtlich den Tag von der Art ohne gibt mir diese Ergebnisse aber wenn ich schließen Sie den Tag in der Reihenfolge von Abschnitt der DENSE_RANK()
- es partitioniert einfach jeden neuen Tag als eine neue ID ....
Hat jemand irgendwelche Ideen, wie dies funktionieren sollte? Freuen uns über jede Beratung und kann weitere Informationen geben, wenn
erforderlich
Nur als eine Anmerkung, versuchte ich, den [Unterschied in Zeilennummer-Methode] (http://rextester.com/COMB14371), aber es ist fehlgeschlagen, also ist dies wahrscheinlich kein guter Ansatz. –
Wie wird der Rang geändert, wenn cust_id oder prod_id geändert wird? Es wäre besser, wenn Sie das auch in Ihrer Probe hinzufügen würden. –