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

如何在SQL Server中计算同一表内指定list_id的价格差值?

解决SQL Server中指定list_id价格精准相减的问题

哦,我懂你的痛点——你原来用的MIN(fiyat) - MAX(fiyat)写法根本没法保证是list_id 5的价格减去list_id 6的,它只是取这两个list_id里的最小和最大数值,完全不对应你要的精准匹配,万一list_id 6的价格比5高,结果直接就反了,这肯定不是你想要的。

给你两种靠谱的写法,根据你的数据情况选就行:

方法一:条件聚合(推荐,适配多记录场景)

这种方法最灵活,不管每个list_id下有多少条价格记录,你都可以指定用哪个聚合值(比如最小、最大、平均)来计算:

SELECT 
  -- 取list_id=5的价格(这里用MAX,你可以换成MIN/AVG等)
  MAX(CASE WHEN liste_id = 5 THEN fiyat END) - 
  -- 取list_id=6的价格(同样可替换聚合函数)
  MAX(CASE WHEN liste_id = 6 THEN fiyat END) AS price_difference
FROM your_table
WHERE liste_id IN (5, 6);

原理很简单:CASE语句会只提取对应list_id的价格,其他情况返回NULL,而聚合函数(比如MAX)会自动忽略NULL值,这样就能精准拿到两个list_id对应的目标价格再做减法。

方法二:子查询(适合每个list_id仅一条记录的场景)

如果你的表中每个list_id唯一对应一条价格记录,那用子查询会更直观:

SELECT 
  (SELECT fiyat FROM your_table WHERE liste_id = 5) - 
  (SELECT fiyat FROM your_table WHERE liste_id = 6) AS price_difference;

⚠️ 注意:如果list_id=5或6存在多条记录,这个写法会直接报错,因为子查询返回了多行结果,所以只适合唯一记录的场景。

内容的提问来源于stack exchange,提问作者Nebi Azizoğlu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:12:51