我有一個充滿產品的sql server數據庫,每個產品有1個樣式記錄和1個或多個sku記錄。我能夠使用dense_rank()成功地在這些表上分頁查詢,但是我不能在我的生活中弄清楚如何根據style_id以外的列來排序樣式,並且仍然能夠添加一個每種風格的增量排名。如何訂購帶有一對多關係和分頁的sql server查詢
我目前使用此查詢:
SELECT *
FROM
(
SELECT
styles.style_id
styles.department,
styles.style,
styles.brand,
styles.description,
skus.sku_id,
skus.color,
skus.size,
skus.price,
skus.creation_date,
DENSE_RANK() OVER (ORDER BY styles.style_id) AS style_rank
FROM skus
LEFT OUTER JOIN styles ON styles.style_id=skus.style_id
WHERE skus.color='blue'
AND styles.brand='acme'
) AS t1
WHERE
t1.style_rank > 0 AND t1.style_rank <= 25
上面可以讓我在款式級別進行分頁,但我需要能夠根據價格ASC/DESC或ASC CREATION_DATE這些樣式排序/ DESC。能夠使用MAX(skus.price)排序樣式等集合函數來控制排序會很好,但這不是必需的。
爲了澄清,一種風格可能有三個skus,這三個skus中的每一個可能是不同的價格。
對於使用RDBMS的零售網站來說,這似乎是一個非常基本的需求,但我無法找到任何有關如何執行此操作的文檔。
任何有關如何做到這一點的建議將不勝感激。
編輯: 我解決了這個使用兩個查詢(顯示在我的答案下面)。
我相信我已經試過了,但讓我再試一次。 – user1034772 2013-03-25 14:32:49
@ user1034772 - 您可能需要使用'ROW_NUMBER()'而不是'DENSE_RANK()'。 – 2013-03-25 14:36:31
我剛剛嘗試了上面的DENSE_RANK()和ROW_NUMBER(),但它們都是在單個樣式的上下文中對價格進行排序。我需要能夠限制顯示的樣式數量,但也能夠在排序之前對整個結果集進行排序。 – user1034772 2013-03-25 14:46:33