我有一个充满产品的 sql server 数据库,每个产品都有 1 条样式记录和 1 条或更多 sku 记录。我能够使用dense_rank()成功地对这些表上的查询进行分页,但是我一生都无法弄清楚如何根据style_id以外的列对样式进行排序,并且仍然能够添加一个每种风格的递增排名。
我目前正在使用此查询:
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 或 creation_date ASC/DESC 对这些样式进行排序。如果能够使用诸如按 MAX(skus.price) 的排序样式之类的聚合函数来控制排序,那就太好了,但这不是必需的。
澄清一下,一种款式可能有三个 skus,这三个 skus 中的每一个都可能是不同的价格。
这似乎是任何使用 RDBMS 的零售网站的基本需求,但我找不到任何有关如何执行此操作的文档。
任何关于如何做到这一点的建议将不胜感激。
编辑:我使用两个查询解决了这个问题(如下面的答案所示)。