黑马程序员技术交流社区
标题:
Sql Server派生表
[打印本页]
作者:
赵小江
时间:
2012-12-27 02:04
标题:
Sql Server派生表
以AdventureWorks为测试数据库.
如果需要获得一张职员名称清单以及职员数量,这些职员的职位相同,执行以下查询会提示错误.但是如果在GROUP BY中加入BusinessEntityID得到的结果又不是想要的.
SELECT BusinessEntityID,JobTitle,count(*)
From HumanResources.Employee
GROUP BY JobTitle
复制代码
解决方法是首先计算出指定职位的人员数量.然后根据这个结果,将其重新与职员表连接,以获取职员清单和指定职位的其他职员的数量信息.
可以将操作分两步进行,使用SELECT INTO语句生成一张新表,该表中包含职位名称和计数,然后将计数返回到职员表中.当然,还必须清除新生成的这张表,并处理由于同时有多人试图执行相同查询时带来的并发问题.
T-SOL中以在FROM子句中嵌入SELECT语句,一条SELECT语句返回一个结果集,但该结果集末被命名,无法在查询中被引用,所以查询中的元素必须通过名称来引用.
SELECT b.BusinessEntityID,b.JobTitle,a.numtitles
from (select JobTitle,count(*) numtitles
From HumanResources.Employee
GROUP BY JobTitle) a INNER JOIN HumanResources.Employee b ON a.JobTitle=b.JobTitle
复制代码
作者:
许庭洲
时间:
2012-12-27 06:31
值得学习ing!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2