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

如何在T-SQL中筛选所有子类型一致的OrderId

解决T-SQL筛选所有SubType值完全相同的OrderId问题

你的原查询问题在于:按OrderId和SubType分组后,会返回每个OrderId下存在的所有不同SubType,根本无法判断该OrderId的所有行是否共享同一个SubType,所以得不到预期结果。

以下是两种可行的解法:

解法1:先筛选符合条件的OrderId,再关联获取SubType

SELECT o.OrderId, o.SubType
FROM Orders o
INNER JOIN (
    -- 先找出所有SubType唯一的OrderId
    SELECT OrderId
    FROM Orders
    GROUP BY OrderId
    HAVING COUNT(DISTINCT SubType) = 1
) valid_orders ON o.OrderId = valid_orders.OrderId
-- 去重,避免同一个OrderId返回多行相同的SubType
GROUP BY o.OrderId, o.SubType;

解法2:直接分组筛选并返回SubType

SELECT 
    OrderId, 
    MAX(SubType) AS SubType -- 因为SubType唯一,MAX/MIN结果一致
FROM Orders
GROUP BY OrderId
-- 筛选条件:该OrderId下不同SubType的数量为1
HAVING COUNT(DISTINCT SubType) = 1;

核心逻辑是利用COUNT(DISTINCT SubType) = 1判断某个OrderId下的所有行SubType完全相同——如果不同值的数量是1,说明所有行的SubType都一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:27:51