DB2公共表表达式属于临时表,下面就为您详细介绍DB2公共表表达式的使用方法,希望可以让您对DB2公共表表达式有更深的认识。
创新互联建站是专业的石柱土家族网站建设公司,石柱土家族接单;提供网站制作、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行石柱土家族网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
DB2使用公共表表达式
DB2公共表表达式是一个本地临时表,可以在一条 SQL 语句中引用多次。这个临时表只能存在于定义它的 SQL 语句的生命周期内。每次公共表表达式被引用时,其结果都是相同的。临时表是在 SQL 语句中用 WITH 子句定义的。下面是具体的语法:
WITH
AS (
- WITH PROD_QUANTITY AS
- (SELECT PRODUCT_ID, SUM (QUANTITY) AS QUANTITY
- FROM CUSTOMER_ORDER_ITEM
- GROUP BY PRODUCT_ID),
- TOTALS AS
- (SELECT -1 AS PRODUCT_ID, SUM(QUANTITY) AS TOTAL)
- SELECT PRODUCT_ID, QUANTITY
- FROM PROD_QUANTITY
- UNION
- SELECT PRODUCT_ID, TOTALS
- FROM TOTALS
- ORDER BY 1 DESC
在上述例子中,prod_quantity 被定义为一个公共表表达式。它与一个名为 totals 的公共表表达式一起使用。最终的 SELECT 语句将从两个公共表表达式中进行选择。
下面看另一个例子:
- WITH
- PAYLEVEL AS
- (SELECT EMPNO, EDLEVEL, YEAR(HIREDATE) AS HIREYEAR,
- SALARY+BONUS+COMM AS TOTAL_PAY
- FROM EMPLOYEE
- WHERE EDLEVEL > 16),
- PAYBYED (EDUC_LEVEL, YEAR_OF_HIRE, AVG_TOTAL_PAY) AS
- (SELECT EDLEVEL, HIREYEAR, AVG(TOTAL_PAY)
- FROM PAYLEVEL
- GROUP BY EDLEVEL, HIREYEAR)
- SELECT EMPNO, EDLEVEL, 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
这个公共表表达式包含了 PAYLEVEL。这个结果表包括员工编号、该员工被雇年份、该员工的总工资以及该员工的受教育程度。只需要包括受教育程度大于 16 的那些员工的记录。
该列表还包括一个名为 PAYBYED(“pay by education” 的缩写)的公共表表达式。它通过使用 PAYLEVEL 表来确定受教育程度、被雇年份和同年被雇的具有同等受教育程度的员工的平均工资。由这个表中得到的列的列名(例如 EDUC_LEVEL)与选择列表中使用的列名不同。
最后,我们得到能够产生所需结果的实际查询。该查询连接两个表(PAYLEVEL、PAYBYED),确定工资低于同年雇用的所有员工平均工资的员工。注意,PAYBYED 是基于 PAYLEVEL 的,所以在整个语句中,PAYLEVEL 实际上被访问了两次。在这两次中,计算查询时都用到了同一组行。
在定义一个公共表表达式之后,就可以像使用其他表一样 SQL 语句中使用它。可以任意次地使用公共表表达式。甚至可以在之前创建的公共表表达式的基础上,再创建一个公共表表达式。
网站题目:DB2公共表表达式的用法
链接地址:http://www.gawzjz.com/qtweb2/news20/470.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联