sql - 按Having子句分组并检查值是否相同
问题描述
我有一张如下表。
Site | VSID1 | VSID2 | Status
C1 | 0.1 | 1 | Rejected
C1 | 0.1 | 1 | Agreed
C1 | 0.2 | 2 | Rejected
C1 | 0.2 | 2 | Rejected
我想在查询中获得结果,并希望所有唯一且具有相同状态的记录,例如按(站点,VSID1,VSID2)分组并选择记录,检查所有行状态是否为“拒绝”
答案应该是第二组记录。不应选择第一组记录,因为它已拒绝并同意。另一方面,应该选择第二组,因为两者都被拒绝。
任何帮助,非常感谢。
我尝试使用 (instr(status, 'Rejected') > 1
解决方案
带最大值和最小值:
select Site, VSID1, VSID2, min(Status) Status
from tablename
group by Site ,VSID1 , VSID2
having min(Status)='Rejected' and max(Status)='Rejected'
如果您想要表中的所有行:
select t.* from tablename t inner join (
select Site, VSID1, VSID2
from tablename
group by Site ,VSID1 , VSID2
having min(Status)='Rejected' and max(Status)='Rejected'
) tt
inner join tt.Site = t.Site and tt.VSID1 = t.VSID1 and tt.VSID2 = t.VSID2
推荐阅读
- emotion - 是否可以使用情感生成 css 文件?
- python - 使用 for 循环解包列表的麻烦
- python - 要求用户向我的库提供非 python 文件的路径
- java - 没有同步的阻塞操作的有效超时
- bash - 如果匹配则修改行首和行尾
- python - PermissionError: [Errno 13] 权限被拒绝为管理员
- javascript - 使用烧瓶打印从python对象转换的JSON字符串
- snowflake-cloud-data-platform - 如何使用雪花配置 Penthao 8.2 批量插入?
- javascript - 反应滚动上一个视图内容
- android - Android 10:cordova-plugin-mfilechose 不工作