ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1632|回复: 7

征求一个查询

[复制链接]

TA的精华主题

TA的得分主题

发表于 2004-12-20 22:17 | 显示全部楼层 |阅读模式
发表: 2004-12-20 12:19:25 人气:16 楼主
求一个较复杂的查询
有一张表 人名 保险 参保状态 1 a 1 1 b 0 2 a 1 2 b 1 3 a 1 4 b 0 5 a 0 5 b 0 查询一个人当他的A保险为状态1是,b保险状态不为1的人 结果是 1 3

TA的精华主题

TA的得分主题

发表于 2004-12-21 07:53 | 显示全部楼层

select 人名 from 表 where (保险='a' and 参保状态=1) or (保险='b' and 参保状态=0)

group by 人名

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-12-21 12:00 | 显示全部楼层

楼上的,感谢你的帮助,可惜你的查询不是

查询一个人当他的A保险为状态1是,b保险状态不为1的人

TA的精华主题

TA的得分主题

发表于 2004-12-21 15:37 | 显示全部楼层

命题不完整!

3根本就没有B保险的状态,何来的为不为1?

根据你的现有命题,可建立三个查询:

查询1:SELECT 表1.人名, 表1.保险, 表1.状态 FROM 表1 WHERE (((表1.保险)="a") AND ((表1.状态)="1"));

查询2:SELECT 表1.人名, 表1.保险, 表1.状态 FROM 表1 WHERE (((表1.保险)="b") AND ((表1.状态)<>"1"));

查询3:SELECT 查询1.人名 FROM 查询1 INNER JOIN 查询2 ON 查询1.人名 = 查询2.人名;

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-12-21 18:48 | 显示全部楼层

其实状态1表示参保,0表示暂停,也就是以前曾经参加过,有因为没中原因暂停了

而3这个人因为没有参加b保险,所以里面没有他的b保险得信息

TA的精华主题

TA的得分主题

发表于 2004-12-22 10:03 | 显示全部楼层

select 人名 from 表 where 人名 in (select 人名 from 表 where (保险='a' and 参保状态=1)) and 人名 not in(select 人名 from 表 where (保险='b' and 参保状态=1)) group by 人名

测试通过

TA的精华主题

TA的得分主题

发表于 2004-12-22 11:41 | 显示全部楼层

meetingr的2个子查询的方法应完全解决了楼主的问题,用的好!

不过下面一行的语句应为排序语句(order by)而非聚合语句。

[此贴子已经被作者于2004-12-22 11:51:50编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-12-22 11:59 | 显示全部楼层

不错,用了2个子查询,我只想到了一个

谢谢

最好再加个distinct就完美了

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 10:12 , Processed in 0.044315 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表