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

如何在SQL Server中实现基于发票产品ID的条件计算查询

SQL Server 带条件的查询计算实现

需求规则

  • 若某一 invoice 仅包含 ProdId = 1 或 2 的产品,结果为 Price * amount
  • 若 invoice 包含其他产品(如 ProdId=3),结果为 Price * amount * 1.01(注:原规则描述的“+1%”对应总价上浮1%,与示例结果匹配)

示例数据

invoiceProdIdPriceamountresult
1110220.2
1220120.2
1310220.2
2110110
2220220

实现SQL语句

通过子查询判断每个 invoice 是否包含非1/2的产品,再执行条件计算:

SELECT 
    invoice,
    ProdId,
    Price,
    amount,
    CASE 
        WHEN EXISTS (
            SELECT 1 
            FROM YourTableName t2 
            WHERE t2.invoice = t1.invoice 
              AND t2.ProdId NOT IN (1,2)
        ) THEN ROUND(Price * amount * 1.01, 1)
        ELSE Price * amount
    END AS result
FROM YourTableName t1;

关键说明

  1. 用 EXISTS 子查询快速检测当前 invoice 是否存在不符合条件的产品
  2. 匹配示例结果保留一位小数,使用 ROUND 函数处理精度
  3. 替换 YourTableName 为实际业务表名

内容的提问来源于stack exchange,提问作者Huy Hoang Nguyen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:30:27