成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

DB2公共表表達式的用法

數據庫
DB2公共表表達式是一個本地臨時表,可以在一條SQL語句中引用多次,下面就讓我們一起來了解一下DB2公共表表達式的用法。

DB2公共表表達式屬于臨時表,下面就為您詳細介紹DB2公共表表達式的使用方法,希望可以讓您對DB2公共表表達式有更深的認識。

DB2使用公共表表達式

DB2公共表表達式是一個本地臨時表,可以在一條 SQL 語句中引用多次。這個臨時表只能存在于定義它的 SQL 語句的生命周期內。每次公共表表達式被引用時,其結果都是相同的。臨時表是在 SQL 語句中用 WITH 子句定義的。下面是具體的語法:

WITH <COMMON NAME1> AS ( <SELECT EXPRESSION>), <COMMON NAME2>

AS (<SELECT EXPRESSION), & SELECT <COLUMN> FROM <TABLE_NAME> <WHERE_CLAUSE>
 
<table_name> 是數據庫中的一個表,也可以是由一個包括 WITH 子句的 SQL 語句定義的 <Common name>。 下面是一個例子:

  1. WITH PROD_QUANTITY AS  
  2.  
  3. (SELECT PRODUCT_ID, SUM (QUANTITY) AS QUANTITY  
  4.  
  5.     FROM CUSTOMER_ORDER_ITEM  
  6.  
  7.     GROUP BY PRODUCT_ID),  
  8.  
  9.  
  10. TOTALS AS  
  11.  
  12. (SELECT -1 AS PRODUCT_ID, SUM(QUANTITY) AS TOTAL)  
  13.  
  14.  
  15. SELECT PRODUCT_ID, QUANTITY   
  16.  
  17. FROM PROD_QUANTITY  
  18.  
  19. UNION  
  20.  
  21. SELECT PRODUCT_ID, TOTALS  
  22.  
  23. FROM TOTALS  
  24.  
  25. ORDER BY 1 DESC  

在上述例子中,prod_quantity 被定義為一個公共表表達式。它與一個名為 totals 的公共表表達式一起使用。最終的 SELECT 語句將從兩個公共表表達式中進行選擇。

下面看另一個例子:

  1. WITH  
  2.  
  3. PAYLEVEL AS                                                   
  4.  
  5.     (SELECT EMPNO, EDLEVEL, YEAR(HIREDATE) AS HIREYEAR,             
  6.  
  7.         SALARY+BONUS+COMM AS TOTAL_PAY                                       
  8.  
  9.         FROM EMPLOYEE                                                           
  10.  
  11.         WHERE EDLEVEL > 16),                                                         
  12.  
  13.  
  14. PAYBYED (EDUC_LEVEL, YEAR_OF_HIRE, AVG_TOTAL_PAY) AS           
  15.  
  16.     (SELECT EDLEVEL, HIREYEAR, AVG(TOTAL_PAY)                    
  17.  
  18.          FROM PAYLEVEL                                              
  19.  
  20.          GROUP BY EDLEVEL, HIREYEAR)  
  21.  
  22.  
  23. SELECT EMPNO, EDLEVEL, YEAR_OF_HIRE, TOTAL_PAY, DECIMAL(AVG_TOTAL_PAY,7,2)  
  24.  
  25.     FROM PAYLEVEL, PAYBYED                                               
  26.  
  27.     WHERE EDLEVEL = EDUC_LEVEL                                          
  28.  
  29.         AND HIREYEARYEAR_OF_HIRE                                
  30.  
  31.         AND TOTAL_PAY < AVG_TOTAL_PAY       

這個公共表表達式包含了 PAYLEVEL。這個結果表包括員工編號、該員工被雇年份、該員工的總工資以及該員工的受教育程度。只需要包括受教育程度大于 16 的那些員工的記錄。

該列表還包括一個名為 PAYBYED(“pay by education” 的縮寫)的公共表表達式。它通過使用 PAYLEVEL 表來確定受教育程度、被雇年份和同年被雇的具有同等受教育程度的員工的平均工資。由這個表中得到的列的列名(例如 EDUC_LEVEL)與選擇列表中使用的列名不同。

最后,我們得到能夠產生所需結果的實際查詢。該查詢連接兩個表(PAYLEVEL、PAYBYED),確定工資低于同年雇用的所有員工平均工資的員工。注意,PAYBYED 是基于 PAYLEVEL 的,所以在整個語句中,PAYLEVEL 實際上被訪問了兩次。在這兩次中,計算查詢時都用到了同一組行。

在定義一個公共表表達式之后,就可以像使用其他表一樣 SQL 語句中使用它。可以任意次地使用公共表表達式。甚至可以在之前創(chuàng)建的公共表表達式的基礎上,再創(chuàng)建一個公共表表達式。

 

 

【編輯推薦】

跨數據庫訪問DB2表的方法

深入解讀DB2存儲過程

帶您了解DB2異常處理器類型

DB2連接服務器的配置

帶您了解DB2鎖的類型

責任編輯:段燃 來源: 互聯網
相關推薦

2024-06-27 00:36:06

2010-11-04 11:17:42

DB2 Merge語句

2010-11-04 11:39:47

2010-11-04 09:50:56

DB2循環(huán)

2010-07-14 09:37:46

Perl正則表達式

2010-07-19 10:40:16

Perl正則表達式

2010-08-09 13:58:59

Flex正則表達式

2010-08-18 08:53:23

DB2 SELECT語

2016-12-05 17:03:59

用法正則表達式

2010-08-10 10:23:16

IBM DB2 V9.

2010-08-12 10:35:06

Flex正則表達式

2010-07-09 09:11:33

Ruby正則表達式

2009-08-27 11:26:04

ibmdw云計算

2014-01-05 17:41:09

PostgreSQL表達式

2010-11-03 15:49:32

DB2刪除表

2010-08-26 11:37:38

DB2命令

2024-03-25 13:46:12

C#Lambda編程

2010-10-08 09:17:07

JavaScript表JavaScript運

2010-04-28 18:17:16

Oracle CASE

2010-08-09 09:05:41

DB2快照函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 伦理二区| 国产精品一区二区三区免费观看 | 美国av毛片 | 精品久久九九 | 人人种亚洲 | 毛片网在线观看 | 国产不卡在线观看 | 国产精品一区二区三区久久 | 断背山在线观看 | 婷婷色在线 | 欧美黄色网 | 午夜专区 | 国产精品婷婷 | 亚洲一区av在线 | 欧美日韩高清在线一区 | 亚洲视频www | 91精品国产色综合久久不卡蜜臀 | 免费看淫片 | 成人欧美一区二区三区黑人孕妇 | 精品国产免费人成在线观看 | 天天色天天射天天干 | 国产精品高 | 国产情侣一区 | 全免费a级毛片免费看视频免 | 怡红院怡春院一级毛片 | 国产精品久久久久久久久图文区 | 久久综合狠狠综合久久 | 亚洲视频二 | 久久久久免费观看 | 国产xxxx搡xxxxx搡麻豆 | 久草青青 | 欧美精品成人一区二区三区四区 | 中国一级特黄视频 | 欧美一区二区三区在线免费观看 | 成人精品久久 | 四虎成人在线播放 | 欧美精品 在线观看 | 一区二区三区精品视频 | 久久久久久久91 | 亚洲精品美女 | 精品视频一区二区三区 |