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

如何简化DB2/400 SQL查询以验证仓库C和D是否位于同一城市?

简化验证仓库C和D是否同城市的DB2/400 SQL实现

需求:确认仓库C和D是否位于同一城市,原SQL返回值为1时表示二者处于同一城市。

原表结构

City Warehouse
1      A        
1      B
2      C
2      D 
3      E
3      F 

原有SQL实现

WITH subquery AS(
  SELECT DISTINCT WHM.City FROM WHM WHERE  
  WHM.Warehouse = 'C' or WHM.Warehouse ='D'
  GROUP BY WHM.City 
  ORDER BY WHM.City ) 
SELECT count(*) FROM subquery 

简化实现方案

方案1:直接统计唯一城市数量

去掉多余的CTE、GROUP BY和ORDER BY,用COUNT(DISTINCT)一步完成:

SELECT COUNT(DISTINCT City) 
FROM WHM 
WHERE Warehouse IN ('C', 'D')

逻辑:筛选出仓库C和D的所有记录,直接统计其中不同城市的数量,结果为1则说明二者同属一个城市。

方案2:直接返回明确的同城市标识

如果需要更直观的结果(1表示同城市,0表示不同),可以用CASE语句封装:

SELECT CASE 
         WHEN COUNT(DISTINCT City) = 1 THEN 1 
         ELSE 0 
       END AS SameCity
FROM WHM 
WHERE Warehouse IN ('C', 'D')

方案3:通过最大/最小城市值比较判断

利用同城市时最大、最小城市值必然相等的特性,性能更优:

SELECT CASE 
         WHEN MAX(City) = MIN(City) THEN 1 
         ELSE 0 
       END AS SameCity
FROM WHM 
WHERE Warehouse IN ('C', 'D')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:52:46