A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵小江 中级黑马   /  2012-12-27 02:04  /  1171 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以AdventureWorks为测试数据库.
如果需要获得一张职员名称清单以及职员数量,这些职员的职位相同,执行以下查询会提示错误.但是如果在GROUP BY中加入BusinessEntityID得到的结果又不是想要的.
  1. SELECT BusinessEntityID,JobTitle,count(*)
  2. From HumanResources.Employee
  3. GROUP BY JobTitle
复制代码
解决方法是首先计算出指定职位的人员数量.然后根据这个结果,将其重新与职员表连接,以获取职员清单和指定职位的其他职员的数量信息.

可以将操作分两步进行,使用SELECT INTO语句生成一张新表,该表中包含职位名称和计数,然后将计数返回到职员表中.当然,还必须清除新生成的这张表,并处理由于同时有多人试图执行相同查询时带来的并发问题.

T-SOL中以在FROM子句中嵌入SELECT语句,一条SELECT语句返回一个结果集,但该结果集末被命名,无法在查询中被引用,所以查询中的元素必须通过名称来引用.
  1. SELECT b.BusinessEntityID,b.JobTitle,a.numtitles
  2. from (select JobTitle,count(*) numtitles
  3. From HumanResources.Employee
  4. GROUP BY JobTitle) a INNER JOIN HumanResources.Employee b ON a.JobTitle=b.JobTitle
复制代码

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马