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

SQL存储过程中如何获取下一行PriceValue列的值?

实现需求:根据Type字段返回当前或下一行的PriceValue

首先要明确:SQL中的行本身是无序的,所以必须指定排序规则来定义“下一行”(比如按ProductID、ShopID或其他业务相关字段排序),否则“下一行”的结果是不可预期的。

假设我们以ProductID升序作为排序依据,你可以使用窗口函数LEAD()来获取下一行的PriceValue,再通过CASE语句判断Type字段决定返回值:

SELECT 
    w.ShopID AS shopID,
    w.ProductName AS ProductName,
    w.ProductID AS ProductID,
    CASE 
        WHEN w.Type = 'Outdoor' THEN LEAD(w.PriceValue) OVER (ORDER BY w.ProductID)
        ELSE w.PriceValue
    END AS PriceValue
FROM 
    Warehouse w

关键细节说明:

  • LEAD(w.PriceValue) OVER (ORDER BY w.ProductID):该窗口函数会获取当前行按指定规则排序后的下一行PriceValue,若当前是最后一行,将返回NULL。
  • 若需按多字段或分组排序(比如按店铺分组后排序),可修改OVER子句,示例:OVER (PARTITION BY w.ShopID ORDER BY w.ProductID)。
  • 若希望最后一行的Outdoor类型数据不返回NULL,可为LEAD()添加默认值,写法:LEAD(w.PriceValue, 1, w.PriceValue) OVER (...),此时最后一行会返回自身的PriceValue。

内容的提问来源于stack exchange,提问作者saafiyah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:15:36