基于T-SQL实现两类特定数据筛选的技术咨询
表格数据筛选实现方案
场景1:仅保留存在OrgName为"A"的Category的所有行
核心逻辑:先找出所有包含OrgName为"A"的Category,再提取这些Category对应的全部记录。
SQL实现写法
-- 写法1:子查询匹配目标Category SELECT * FROM 你的表名 WHERE Category IN ( SELECT DISTINCT Category FROM 你的表名 WHERE OrgName = 'A' ); -- 写法2:JOIN关联筛选(大数据量下性能更优) SELECT t.* FROM 你的表名 t JOIN ( SELECT DISTINCT Category FROM 你的表名 WHERE OrgName = 'A' ) c ON t.Category = c.Category;
工具端(如Excel)实现思路
先筛选出OrgName为"A"的行,提取唯一的Category值,再用这些值回到原表做匹配筛选。
场景2:仅保留distinct OrgNames数量>3的Category的所有行
核心逻辑:先统计每个Category下不同OrgName的数量,只保留数量超过3的Category对应的所有行。
SQL实现写法
-- 写法1:GROUP BY统计后匹配 SELECT * FROM 你的表名 WHERE Category IN ( SELECT Category FROM 你的表名 GROUP BY Category HAVING COUNT(DISTINCT OrgName) > 3 ); -- 写法2:窗口函数标记后过滤(无需额外关联,保留原表所有字段) SELECT * FROM ( SELECT *, COUNT(DISTINCT OrgName) OVER (PARTITION BY Category) AS 不同Org数量 FROM 你的表名 ) t WHERE t.不同Org数量 > 3;
工具端(如Excel)实现思路
用数据透视表统计每个Category的不同OrgName数量,筛选出数量>3的Category,再回到原表做匹配筛选。
内容的提问来源于stack exchange,提问作者WindSwept
相关产品推荐
相关产品推荐

