มาทำความรู้จัก โครงสร้างอย่างง่ายของ Common Table Expressions (CTE) ใน SQL Server
โอเค…เรามาเริ่มทำความรู้จัก CTE กันเลย…
Common Table Expressions (CTE) เป็นฟีเจอร์ใน SQL ที่ช่วยให้เราสามารถสร้างผลลัพธ์ชั่วคราวที่สามารถอ้างอิงได้ภายในคำสั่ง SQL โดยที่เราไม่ต้องสร้างตารางจริง และมองง่ายก็จะคล้ายๆ กับ Temp table นั้นเอง
โดยโครงสร้าง ของ CTE ประกอบด้วย
- คำสั่ง
WITH
- ชื่อของ CTE
- คำสั่ง
AS
ซึ่งมีการใส่คำสั่ง SQL ที่จะสร้างผลลัพธ์ชั่วคราวไว้ภายใน
ตัวอย่าง โครงสร้างเเละการเรียกใช้งาน
WITH cte_name AS (
SELECT column1, column2
FROM table_name
WHERE condition
)
SELECT column1, column2
FROM cte_name
WHERE another_condition;
ตัวอย่างที่ 1: การใช้ CTE เพื่อเลือกข้อมูล
WITH cte_user AS (
SELECT fistname, lastname, position , age
FROM tb_user
WHERE position='manager'
AND age > 30
)
SELECT fistname, lastname, position , age
FROM cte_user;
ในตัวอย่างนี้ CTE ชื่อ cte_user จะเลือก user ที่มีตำแหน่งเป็น 'manager' และอายุมากว่า 30 และนำข้อมูลนั้นมาใช้ในคำสั่ง SELECT
ต่อ
ตัวอย่างที่ 2: การใช้ CTE เพื่อเลือกข้อมูลโดยเงื่อนไขต่างกันเเต่ต้องการเพียง 1 ชุดข้อมูลเท่านั้น
WITH cte_user AS (
SELECT fistname, lastname, position , age
FROM tb_user
WHERE position ='manager'
AND age > 30
UNION ALL
SELECT fistname, lastname, position , age
FROM tb_user
WHERE position !='manager'
)
SELECT fistname, lastname, position , age
FROM cte_user
WHERE fistname like 'f%';
ในตัวอย่างนี้ CTE ชื่อ cte_user จะเลือก user ที่มีตำแหน่งเป็น ‘manager’ และอายุมากว่า 30 และ user ที่ไม่มีตำแหน่งเป็น ‘manager’ โดยไม่จำกัดอายุ โดยข้อมูลนั้นมาใช้ในคำสั่ง SELECT
ต่อ โดยมีเงื่อนไขอีกว่าจะต้องมีชื่อ fistname ตัวอักษรขึ้นด้วย “f” ด้วยในการเเสดงข้อมูล
ดังนั้นจากตัวอย่างทั้ง 2 ก็ขึ้นอยู่กับ เราจะนำ CTE มาใช้งานอย่างไรให้เหมาะสมเเละถูกเวลากับงานเรานั้นเอง โดยที่เราก็สามารถที่ลองศึกษาเพิ่มเติมได้ที่ https://learn.microsoft.com/en-us/sql/t-sql/queries/with-common-table-expression-transact-sql?view=sql-server-ver16
สุดท้ายเเล้ว หลังจากอ่านบทความนี้หวังว่าทุกคนสามารถเริ่มเข้าใจเเละใช้งาน CTE กันนะครับ
…………………………………….ด้วยความหวังดี ……………………………………….