You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2014中如何获取MIN实际价对应的原始价格与折扣?

解决方案:获取分组后最低实际价格对应的原始字段值

在SQL Server 2014中,你可以借助窗口函数ROW_NUMBER()来实现需求,具体思路是先为每个IDHOTEL分组内的记录按实际价格(通过dbo.GetActualValue计算)排序,取每组中排序第一的记录,就能拿到对应最低实际价格的原始Price_Value和Discount。

完整SQL语句如下:

WITH RankedRooms AS (
    SELECT
        IDHOTEL,
        Price_Value,
        Discount,
        dbo.GetActualValue(Price_Value, Discount) AS ActualPrice,
        ROW_NUMBER() OVER (
            PARTITION BY IDHOTEL 
            ORDER BY dbo.GetActualValue(Price_Value, Discount) ASC
        ) AS RowNum
    FROM HotelRoom
)
SELECT
    IDHOTEL,
    Price_Value,
    Discount,
    ActualPrice
FROM RankedRooms
WHERE RowNum = 1;

代码说明:

  • CTE RankedRooms:先计算每条记录的实际价格,并通过ROW_NUMBER()按IDHOTEL分组,每组内按实际价格升序编号,实际价格最低的记录编号为1。
  • 主查询:筛选出编号为1的记录,就是每个酒店实际价格最低的那条,同时保留原始的Price_Value和Discount字段。

如果存在多个记录实际价格相同且同为最低的情况,ROW_NUMBER()只会返回其中一条。如果需要返回所有并列最低的记录,可以把ROW_NUMBER()换成RANK()或DENSE_RANK()。

内容的提问来源于stack exchange,提问作者Pham van phuong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:55:15