我有一个充满产品的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