首页 > 解决方案 > 显示值在组中至少出现一次的所有行

问题描述

我有一个导致以下结果的 SQL 查询。RN 是每次我们使用以下 ID 之一进行交易时的行号。我只想查看在 GROUP 中具有“A”值的人的 ID。

我尝试执行 WHERE 语句,但这只会让我得到具有 A 的行......我想查看在 GROUP 中至少出现一次“A”的所有 ID 行。

这会在子查询中工作吗?

RN    ID    GROUP
1     001   A
2     001   B
3     001   B
1     002   B
2     002   B

标签: sqlsql-server

解决方案


测试设置(注意Group是保留字)

create table t(rn NUMERIC(2), id varchar (3), thegroup char)

insert t values(1,'001','A')
insert t values(2,'001','B')
insert t values(3,'001','B')
insert t values(1,'002','B')
insert t values(2,'002','B')

需要查询

select *
from t
where id in (
  select id
  from t
  where thegroup in ('A')
)

结果

rn |id  |thegroup |
---|----|---------|
1  |001 |A        |
2  |001 |B        |
3  |001 |B        |

推荐阅读