GZICP.com   
 
    返回首页
    联系我们
 
 
     

SQL入门:表表达式

www.gzicp.com   2004年7月9日 16:21:01
 
  1、表表达式                                                                  
  如果只需要单个查询的视图定义,可使用表表达式。                               

  表表达式是临时的,只
图更灵活。任何授权的用户
在 SQL 语句的使用期限内有效
都可共享视图定义。
;表表达式不能共享,但它们比视


  本节描述如何在查询中使用公共表表达式和嵌套表表达式。                         

  2、公共表表达式                                                              

  公共表表达式是在全查
创建以在复杂查询之中使用
式。对公共表表达式的重复
,则每次都将重新生成结果
询的开头使用 WITH 关键字定义
的表表达式。在查询的开头使用
引用使用同一个结果集。相比之
集,其结果可能各不相同。
的命名结果表。公共表表达式是您
WITH 子句定义并命名公共表表达
下,如果使用嵌套表表达式或视图


  下列示例列出公司中教
人低的所有人。在该查询后
育级别大于 16、平均工资比那
面会更详细地描述查询的各个部
些同时雇用的且有同样教育级别的
分。

  (1)                                                                       

   WITH                                                            
   PAYLEVEL AS                                  
   (SELECT EMPNO, YEA
R(HIREDATE) AS HIREYEAR, EDLEVEL,
   SALARY+BON
US+COMM AS TOTAL_PAY
   FROM EMPLOYEE                
   WHERE EDLEVEL > 16),


  (2)                                                                       
   PAYBYED (
EDUC_LEVEL, YEAR_OF_HIRE, AV
G_TOTAL_PAY) AS
   (SELECT EDLEVEL, H
IREYEAR, AVG(TOTAL_PAY)
   FROM PAYLEVEL                

   GR
OUP BY EDLEVEL, HIREYEAR)

  (3)                                                                       

   SELECT EMPNO, E
)
DLEVEL, YEAR_OF_HIRE, TOTAL_

PAY, DECIMAL(AVG_TOTAL_PAY,7,2

   FROM PAYLEVEL, PAYBYED                  
   WHERE EDLEVEL=EDUC_LEVEL              
   AND HIREYEAR = YEAR_OF_HIRE    
   AND TOTAL_PAY < AVG_TOTAL_PAY



  (1)这是名为 PAYLEVEL
收入以及他(或她)的教育
的公共表表达式。此结果表包
级别。只包括雇员的教育级别大
括雇用某个人的年份、该雇员的总
于 16 的那些行。

  (2)这是名为 PAYBYED(或 PAY by e
公共表表达式中创建的 PAYLEVEL 表来确
年份以及平均收入。此表返回的列被赋予
EDUC_LEVEL)。这会生成命名为 PAYBYED

ducation)的公共表表达式。该表达式使用在前一个
定每个教育级别同一年雇用的雇员的教育级别、雇用
的名称与选择列表中所使用的列名不同(如
的结果集,与嵌套表表达式示例中产生的结果相同


  (3)最后,我们获得能产生期望结果
以确定总收入比同年雇用的人的平均收入
。所以在完整语句中有效地存取了 PAYLE
的实际查询。连接这两个表(PAYLEVEL,PAYBYED)
低的那些人。注意:PAYBYED 是以 PAYLEVEL 为基础
VEL 两次。两次都使用同一组行来计算查询。
  最终结果如下:                                                                

   


  3、嵌套表表达式                                                              
  嵌套表表达式是一个临

时视图,其中的定义被嵌套(直

接定义)在主查询的 FROM子 句中


  下列查询使用嵌套表表
以及雇用年份:
达式来寻找那些教育级别超过 1

6 的雇员的平均总收入、教育级别


                                                                               
   SELECT EDLEVEL, HIREYEAR, D
ECIMAL(AVG(TOTAL_PAY), 7,2)
   FROM (SELECT
YEAR(HIREDATE) AS HIREYEAR,
EDLEVEL,
  
SALARY+BONUS+COMM AS TOTAL_
PAY
   FROM EMPLOYEE                  
   WHERE EDLEVEL > 16 ) AS PAY_LEVEL

   GROUP BY EDLEVEL, HIREYEAR          
   ORDER BY EDLEVEL, HIREYEAR          
                                                                               

  结果如下:                                                                   

   

 
 

ChinaITLab 

相关文章
·SQL入门:条件表达式(2004年07月09日)
·SQL入门:转换数据类型(2004年07月09日)
·SQL入门:标量全查询(2004年07月09日)
·SQL入门:分组(2004年07月09日)
·SQL入门:使用函数(2004年07月09日)
·SQL入门:使用子查询(2004年07月09日)
·SQL入门:从多个表中选择数据(2004年07月09日)
·SQL入门:给表达式命名(2004年07月05日)
·SQL入门:使用表达式来计算值(2004年07月05日)
·SQL入门:运算次序(2004年07月05日)
·SQL入门:除去重复行(2004年07月05日)
·SQL入门:将行进行排序(2004年07月05日)
·SQL入门:选择行(2004年07月05日)
·SQL入门:选择列(2004年07月05日)
·SQL入门:创建视图(2004年06月30日)
·SQL入门:删除数据(2004年06月30日)
·SQL入门:更改数据(2004年06月30日)
·SQL入门:插入数据(2004年06月30日)
·SQL入门:创建表(2004年06月30日)
·SQL入门:数据类型(2004年06月28日)
·SQL入门:模式(2004年06月28日)
·SQL入门:视图(2004年06月28日)
·SQL入门:表(2004年06月28日)
最新文章
·防范SQL注入式攻击  (2004年09月05日)
·SQL injection的实现与应用  (2004年09月04日)
·SQL入门:目录视图的介绍  (2004年07月15日)
·SQL入门:大对象 (LOB)  (2004年07月15日)
·SQL入门:用户定义函数  (2004年07月15日)
·SQL入门:用户定义类型  (2004年07月15日)





 
 
Copyright © 1999-2008 GZICP.com All Rights Reserved