到目前为止,我的查询如下:
SELECT [Id], [HotelName], [StarRating], [Description], [CheckinDate], [CheckoutDate], [Price], [ImageUrl]
FROM
(
SELECT TOP (6) [Id], [HotelName], [StarRating], [Description], [CheckinDate], [CheckoutDate], [Price], [ImageUrl], RANK() OVER(PARTITION BY [StarRating] ORDER BY [StarRating]) AS Num
FROM [dbo].[Hotel]
WHERE [CityId] = @CityId
AND CheckinDate > GETDATE()
AND [StarRating] IN (3, 4, 5)
) X
WHERE Num <= 2我想要的是为每个星级得到2行:2个3级,2个4级和2个5级。我该怎么做?我已经在网上做了一些研究后想出了上面的想法,但我显然没有完全理解hwo来实现它,因为它不起作用……我得到了6排3的星级
发布于 2011-10-19 12:27:51
使用ROW_NUMBER函数-例如,
WITH X
AS
(
SELECT
[Id], [HotelName], [StarRating], [Description],
[CheckinDate], [CheckoutDate], [Price], [ImageUrl],
ROW_NUMBER() OVER(PARTITION BY [StarRating] ORDER BY [Id]) AS Num
FROM
[dbo].[Hotel]
WHERE
[CityId] = @CityId
AND CheckinDate > GETDATE()
AND [StarRating] IN (3, 4, 5)
)
SELECT
[Id], [HotelName], [StarRating], [Description],
[CheckinDate], [CheckoutDate], [Price], [ImageUrl]
FROM
X
WHERE
Num <= 2https://stackoverflow.com/questions/7816457
复制相似问题