SQL Server 一般資料表運算式(CTE)

要解釋的話挺麻煩的
偷懶一下,可以點下面前往參考
挺容易了解的









--ISO SQL:2003
--CTE(Common Table Expression)
WITH Temp
AS
(
 SELECT * FROM 巨巨
)
SELECT * FROM Temp
ORDER BY 價錢 DESC
GO
------------------------------------------------------
--可以2個CTE然後join----------------------------------
USE 中文北風
GO
WITH T1
AS
(
 SELECT DISTINCT 職稱 FROM 員工
), T2
AS
(
 SELECT 職稱,COUNT(*) AS 人數 FROM 員工
 WHERE 稱呼 = '小姐'
 GROUP BY 職稱
)
SELECT T1.職稱,ISNULL(T2.人數,0) AS 人數
FROM T1 LEFT JOIN T2 ON T1.職稱 = T2.職稱
GO
------------------------------------------------------
------------------------------------------------------
--CTE遞迴,有時設定沒給好造成無窮迴圈-----------------
--這時在結尾的SELETE可以加上OPTION(MAXRECURSION 1)
--意思是最大遞廻1次,避免本案例中出現無窮的階層-------
WITH EE(員工編號,姓名,職稱,階層)
AS
(
 SELECT 員工編號,姓名,職稱,1
 FROM 員工
 WHERE 主管 IS NULL
 UNION ALL
 SELECT 員工.員工編號,員工.姓名,員工.職稱,EE.階層+1
 FROM 員工 JOIN EE ON 員工.主管 = EE.員工編號
)
--SELECT * FROM EE 
SELECT * FROM EE OPTION(MAXRECURSION 1)
GO

留言

熱門文章