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

SQL Server 2019中如何筛选符合特定OrderType数量的OrderGroup?

解决方案

SQL Server 2019完全支持实现这个需求,你可以通过在HAVING子句中结合COUNT()和CASE表达式,精准统计特定订单类型的数量,从而筛选出符合条件的OrderGroup。

正确的SQL语句

SELECT  OrderGroup
FROM    dbo.[Order] orders
GROUP BY orders.OrderGroup
HAVING 
    COUNT(CASE WHEN orders.OrderType = 3845 THEN 1 END) = 2
    AND COUNT(CASE WHEN orders.OrderType = 5188 THEN 1 END) = 1
ORDER BY orders.OrderGroup

代码说明

  • COUNT(CASE WHEN orders.OrderType = 3845 THEN 1 END):仅统计当前分组中OrderType等于3845的记录数——当条件不满足时CASE返回NULL,而COUNT()会忽略NULL值,因此得到的是该类型的精准数量。
  • 第二个COUNT(CASE...)逻辑一致,用于统计OrderType为5188的记录数,等于1即符合要求。

可选补充(排除其他订单类型)

如果要求OrderGroup中只能包含3845和5188这两种订单类型,不能有其他类型,可以在HAVING中额外添加条件:

HAVING 
    COUNT(CASE WHEN orders.OrderType = 3845 THEN 1 END) = 2
    AND COUNT(CASE WHEN orders.OrderType = 5188 THEN 1 END) = 1
    AND SUM(CASE WHEN orders.OrderType NOT IN (3845, 5188) THEN 1 ELSE 0 END) = 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:05:56