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

如何将同一列详情的其他行置空?附SQL查询及结果

解决方法:将相同订单号的非首行订单号置空

你想要的应该是同一个OrderNumber对应的多条记录里,只保留第一条(CouponRowId=1)的订单号,其余行的OrderNumber置空对吧?直接基于你现有的SQL查询,添加一个CASE判断语句就能实现:

SELECT 
    CASE WHEN CouponRowId = 1 THEN o.OrderNumber ELSE NULL END AS OrderNumber,
    oi.Sku, 
    SUM(ISNULL(oi.Price * oi.Quantity, 0)) AS Price, 
    DENSE_RANK() OVER(PARTITION BY o.OrderNumber ORDER BY oi.Sku) AS CouponRowId 
FROM ac_OrderItems oi 
INNER JOIN ac_Orders o ON oi.OrderId = o.OrderId 
INNER JOIN ac_OrderShipments os ON oi.OrderShipmentId = os.OrderShipmentId 
WHERE (oi.OrderItemTypeId IN (5)) 
GROUP BY o.OrderNumber, oi.Sku

实现逻辑

核心就是利用你已经生成的CouponRowId字段做条件判断:

  • 当CouponRowId等于1时,保留原OrderNumber的值
  • 其余情况返回NULL(也就是置空)

调整后你的查询结果会变成这样:

SkuPriceCouponRowId
BLACKBERRY-5.69001
LEM...xxxxxx2

如果你的场景需要显示空字符串而非NULL,可以把ELSE NULL改成ELSE '',不过一般来说用NULL更符合数据库的空值规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:43:09