1、表表達式
如果只需要單個查詢的視圖定義,可使用表表達式。
表表達式是臨時的,只在 SQL 語句的使用期限內有效;表表達式不能共享,但它們比視圖更靈活。任何授權的用戶都可共享視圖定義。
2、公共表表達式
公共表表達式是在全查詢的開頭使用 WITH 關鍵字定義的命名結果表。公共表表達式是您創建以在複雜查詢之中使用的表表達式。在查詢的開頭使用 WITH 子句定義並命名公共表表達式。對公共表表達式的重複引用使用同一個結果集。相比之下,如果使用嵌套表表達式或視圖,則每次都將重新生成結果集,其結果可能各不相同。
例如:
WITH T1(COL1,NEW_COL1) AS(
SELECT COL1,COUNT(COL2) AS NEW_COL1 FROM A
WHERE COL3=?
GROUP BY COL1,COL2
)
SELECT * FROM T1
再例如:
WITH T1(COL1,NEW_COL1) AS(
SELECT COL1,COUNT(COL2) AS NEW_COL1 FROM TABLE_A
WHERE COL3=?
GROUP BY COL1,COL2
),
T2(COL1,COL2) AS(
SELECT COL1,COL2 FROM TABLE_B WHERE COL1=?
)
SELECT A.* FROM T1 A
JOIN T2 B ON A.N_CODE=B.N_TYPE