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

SSMS查询需求:当SKU存在符合条件行时返回其全部行

解决SSMS中按Reason过滤并返回对应SKU全部行的需求

嘿,作为SSMS新手碰到这种需求完全不用慌,这其实是个很典型的「先找符合条件的分组,再取分组内所有数据」的场景,我给你两种简单易懂的实现方法:

方法一:子查询(直观易读)

这种方式逻辑最清晰,先找出所有包含目标Reason的SKU,再把这些SKU的所有记录都查出来。比如你要过滤Reason='r1'的情况,SQL语句如下:

-- 替换YourTableName为你的实际表名
SELECT *
FROM YourTableName
WHERE SKU IN (
    -- 子查询:找出所有包含r1的SKU
    SELECT SKU
    FROM YourTableName
    WHERE Reason = 'r1'
);

执行这条语句后,就会返回s1、s2、s3的所有行——正好符合你要的「返回所有包含该Reason的SKU的全部行」的要求。

方法二:自连接(适合大数据量场景)

如果你的数据表数据量很大,自连接的性能可能更优,原理是通过关联同一个表的SKU字段,把包含目标Reason的SKU的所有记录筛选出来:

-- 替换YourTableName为你的实际表名
SELECT DISTINCT t1.*
FROM YourTableName t1
JOIN YourTableName t2 
  ON t1.SKU = t2.SKU
WHERE t2.Reason = 'r1';

这里的DISTINCT是为了避免重复行(如果你的表本身没有重复记录,也可以去掉),同样能得到你需要的结果。

进阶:动态指定Reason

如果你想快速切换不同的Reason过滤,还可以用SSMS的变量来实现,不用每次改SQL语句:

DECLARE @TargetReason VARCHAR(50) = 'r1'; -- 这里直接修改Reason的值即可
SELECT *
FROM YourTableName
WHERE SKU IN (
    SELECT SKU
    FROM YourTableName
    WHERE Reason = @TargetReason
);

这样你只要改@TargetReason的值,就能轻松切换过滤条件啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:39:05