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

基于AdventureWorks 2019的发票最贵商品报表开发请求

查询每张订单中单价最高的商品信息

针对AdventureWorks 2019示例数据库的需求,我们可以通过窗口函数筛选出每个订单(发票)中单价最高的商品,关联商品表获取名称后输出指定字段。

核心SQL查询

SELECT 
    sod.SalesOrderID AS [Invoice number],
    p.Name AS [product title],
    sod.LineTotal AS [product amount]
FROM (
    SELECT 
        SalesOrderID,
        ProductID,
        LineTotal,
        UnitPrice,
        -- 按订单分组,单价降序排序,标记每组内的最高单价商品
        ROW_NUMBER() OVER (PARTITION BY SalesOrderID ORDER BY UnitPrice DESC) AS rn
    FROM Sales.SalesOrderDetail
) sod
JOIN Production.Product p 
    ON sod.ProductID = p.ProductID
WHERE sod.rn = 1;

说明

  • 子查询中使用ROW_NUMBER()窗口函数,以SalesOrderID(订单/发票号)为分组依据,每组内按UnitPrice(单价)降序排列,序号rn=1的记录即为该订单中单价最高的商品。
  • 关联Production.Product表获取商品的名称(product title)。
  • LineTotal字段对应商品的总金额(单价×数量),符合需求中的product amount。

扩展:保留同订单内多个最高单价商品

如果订单中存在多个商品单价相同且均为最高值,想要保留所有这类记录,可将ROW_NUMBER()替换为RANK():

SELECT 
    sod.SalesOrderID AS [Invoice number],
    p.Name AS [product title],
    sod.LineTotal AS [product amount]
FROM (
    SELECT 
        SalesOrderID,
        ProductID,
        LineTotal,
        UnitPrice,
        RANK() OVER (PARTITION BY SalesOrderID ORDER BY UnitPrice DESC) AS rn
    FROM Sales.SalesOrderDetail
) sod
JOIN Production.Product p 
    ON sod.ProductID = p.ProductID
WHERE sod.rn = 1;

内容的提问来源于stack exchange,提问作者فاطیما شاه حسینی

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:25:41