DB2公共表表达式的用法

DB2公共表表达式属于临时表,下面就为您详细介绍DB2公共表表达式的使用方法,希望可以让您对DB2公共表表达式有更深的认识。

创新互联建站是专业的石柱土家族网站建设公司,石柱土家族接单;提供网站制作、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行石柱土家族网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

DB2使用公共表表达式

DB2公共表表达式是一个本地临时表,可以在一条 SQL 语句中引用多次。这个临时表只能存在于定义它的 SQL 语句的生命周期内。每次公共表表达式被引用时,其结果都是相同的。临时表是在 SQL 语句中用 WITH 子句定义的。下面是具体的语法:

WITH AS ( FROM
 
是数据库中的一个表,也可以是由一个包括 WITH 子句的 SQL 语句定义的 。 下面是一个例子:

 
 
 
  1. WITH PROD_QUANTITY AS
  2. (SELECT PRODUCT_ID, SUM (QUANTITY) AS QUANTITY
  3.     FROM CUSTOMER_ORDER_ITEM
  4.     GROUP BY PRODUCT_ID),
  5. TOTALS AS
  6. (SELECT -1 AS PRODUCT_ID, SUM(QUANTITY) AS TOTAL)
  7. SELECT PRODUCT_ID, QUANTITY 
  8. FROM PROD_QUANTITY
  9. UNION
  10. SELECT PRODUCT_ID, TOTALS
  11. FROM TOTALS
  12. ORDER BY 1 DESC

在上述例子中,prod_quantity 被定义为一个公共表表达式。它与一个名为 totals 的公共表表达式一起使用。最终的 SELECT 语句将从两个公共表表达式中进行选择。

下面看另一个例子:

 
 
 
  1. WITH
  2. PAYLEVEL AS                                                 
  3.     (SELECT EMPNO, EDLEVEL, YEAR(HIREDATE) AS HIREYEAR,           
  4.         SALARY+BONUS+COMM AS TOTAL_PAY                                     
  5.         FROM EMPLOYEE                                                         
  6.         WHERE EDLEVEL > 16),                                                       
  7. PAYBYED (EDUC_LEVEL, YEAR_OF_HIRE, AVG_TOTAL_PAY) AS         
  8.     (SELECT EDLEVEL, HIREYEAR, AVG(TOTAL_PAY)                  
  9.          FROM PAYLEVEL                                            
  10.          GROUP BY EDLEVEL, HIREYEAR)
  11. SELECT EMPNO, EDLEVEL, YEAR_OF_HIRE, TOTAL_PAY, DECIMAL(AVG_TOTAL_PAY,7,2)
  12.     FROM PAYLEVEL, PAYBYED                                             
  13.     WHERE EDLEVEL = EDUC_LEVEL                                        
  14.         AND HIREYEAR= YEAR_OF_HIRE                              
  15.         AND TOTAL_PAY < AVG_TOTAL_PAY     

这个公共表表达式包含了 PAYLEVEL。这个结果表包括员工编号、该员工被雇年份、该员工的总工资以及该员工的受教育程度。只需要包括受教育程度大于 16 的那些员工的记录。

该列表还包括一个名为 PAYBYED(“pay by education” 的缩写)的公共表表达式。它通过使用 PAYLEVEL 表来确定受教育程度、被雇年份和同年被雇的具有同等受教育程度的员工的平均工资。由这个表中得到的列的列名(例如 EDUC_LEVEL)与选择列表中使用的列名不同。

最后,我们得到能够产生所需结果的实际查询。该查询连接两个表(PAYLEVEL、PAYBYED),确定工资低于同年雇用的所有员工平均工资的员工。注意,PAYBYED 是基于 PAYLEVEL 的,所以在整个语句中,PAYLEVEL 实际上被访问了两次。在这两次中,计算查询时都用到了同一组行。

在定义一个公共表表达式之后,就可以像使用其他表一样 SQL 语句中使用它。可以任意次地使用公共表表达式。甚至可以在之前创建的公共表表达式的基础上,再创建一个公共表表达式。

当前标题:DB2公共表表达式的用法
标题URL:http://www.shufengxianlan.com/qtweb/news19/22519.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联