【发布时间】:2021-12-13 19:13:33
【问题描述】:
这是我正在使用的架构和数据
CREATE TABLE tbl (
name varchar(20) not null,
groups int NOT NULL
);
insert into tbl values('a', 35);
insert into tbl values('a', 36);
insert into tbl values('b', 35);
insert into tbl values('c', 36);
insert into tbl values('d', 37);
| name | groups|
|------|-------|
| a | 35 |
| a | 36 |
| b | 35 |
| c | 36 |
| d | 37 |
现在我只需要组大于或等于 35 的名称 但还有一点是,当相应的组=36 也存在时,我只能包含组=35 的行
| name | groups|
|------|-------|
| a | 35 |
| a | 36 |
第二个条件是它可以包含那些组大于或等于 36 而没有组=35的名称
| name | groups|
|------|-------|
| c | 36 |
| d | 37 |
它应该省略的唯一情况是记录只有groups=35而没有相应的groups=36
| name | groups|
|------|-------|
| b | 35 |
我已经尝试了以下
select name from tbl
where groups>=35
group by name
having count(distinct(groups))>=2
or groups>=36;
这是我面临的错误Column 'tbl.groups' is invalid in the HAVING clause because it is not contained in either an aggregate function or the GROUP BY clause.
【问题讨论】:
标签: sql sql-server ssms ssms-2014