sql server query - 写入多个查询的唯一方法是什么?

时间:2010-10-17 05:22:06

标签: sql sql-server

如果我有一张水果桌:

FruitId ColorId NumofPurchased

我想为每个colorId返回一行,其中NumOfPurchased是该colorId的最大值。我想出的方法是循环使用colorId或手动编写10种颜色的10个查询...我不知道,有更好/更优化的方法吗?

我正在使用SQL Server 2008 express。

2 个答案:

答案 0 :(得分:1)

SELECT MAX(NumOfPurchased), ColorId, FruitId
FROM fruit
GROUP BY ColorId, FruitId

这应该可以解决问题。

答案 1 :(得分:0)

不确定这是否正是您想要的(无论是所有水果中每种颜色的最大值,还是每种水果的每种颜色的最大值) - 但您可以更改/添加PARTITION BY子句的值必要的。

;with fruitCTE
AS
(
    SELECT  FruitId, ColorId, NumofPurchased,
            ROW_NUMBER() OVER (PARTITION BY ColorId,
                               ORDER BY NumofPurchased DESC
                              ) AS rn
    FROM    fruit
)
SELECT FruitId, ColorId, NumofPurchased,
FROM fruitCTE
WHERE rn = 1;