جستجو برای:
  • صفحه نخست
  • دوره های آموزشی
  • مطالب آموزشی
    • Power BI
    • Power Query
    • DAX
    • Microsoft Excel
    • SQL
    • SQL Server Analysis Services (SSAS)
    • SQL Server Integration Services (SSIS)
    • SQL Server Reporting Services (SSRS)
  • دانلودهاب
    • دانلود E-book های تحلیل داده و هوش تجاری
    • دانلود ویژوال های Power BI
    • دانلود فایل نقشه SVG
    • دانلود دیتاست
  • ارتباط با ما
 
تحلیل داده | هوش تجاری | آموزش Power BI
  • صفحه نخست
  • دوره های آموزشی
  • مطالب آموزشی
    • Power BI
    • Power Query
    • DAX
    • Microsoft Excel
    • SQL
    • SQL Server Analysis Services (SSAS)
    • SQL Server Integration Services (SSIS)
    • SQL Server Reporting Services (SSRS)
  • دانلودهاب
    • دانلود E-book های تحلیل داده و هوش تجاری
    • دانلود ویژوال های Power BI
    • دانلود فایل نقشه SVG
    • دانلود دیتاست
  • ارتباط با ما
0

ورود و ثبت نام

مطالب آموزشی

تحلیل داده | هوش تجاری | آموزش Power BIمطالب آموزشیSQLCTE در SQL Server چیست؟

CTE در SQL Server چیست؟

تیر 22, 1404
ارسال شده توسط Banafsheh
SQL
8 بازدید

Common Table Expression (CTE) در SQL Server یک عبارت موقت (شبیه جدول موقت) است که تنها در طول اجرای یک کوئری معتبر است. این ابزار قدرت ساختن کوئری‌های پیچیده را ساده و قابل‌فهم می‌کند و می‌توان از آن در دستورات SELECT، INSERT، UPDATE یا DELETE استفاده کرد.

ساختار کلی یک CTE

				
					WITH YourCTEName (Column1, Column2, ...)
AS (
  -- یک SELECT که نتیجه آن CTE را می‌سازد
  SELECT ...
  FROM ...
  WHERE ...
)
-- سپس:
SELECT * FROM YourCTEName;
				
			
  • WITH برای شروع CTE

  • YourCTEName: نام، مانند جدول موقت

  • فهرست ستون‌ها: انتخاب در داخل CTE

  • داخل پرانتز، یک SELECT اصلی که نتیجه را تامین می‌کند.

انواع CTE

1. نا-بازگشتی (Non-Recursive)

برای شکستن کوئری‌های متوسط و خواناتر کردن آن‌ها استفاده می‌شود:

				
					WITH ITStaff AS (
  SELECT EmployeeID, FirstName, Salary
  FROM Employees
  WHERE Department = 'IT'
)
SELECT * FROM ITStaff;
				
			

این کوئری تمام پرسنل IT را فیلتر کرده و در CTE ذخیره می‌کند .

2. بازگشتی (Recursive)

برای داده‌های سلسله‌مراتبی، مانند ساختار مدیر–کارمند:

				
					WITH RecursiveEmployeeCTE AS (
  SELECT EmployeeID, FirstName, LastName, ManagerID
  FROM Employees
  WHERE ManagerID IS NULL  -- نقطه آغاز

  UNION ALL

  SELECT e.EmployeeID, e.FirstName, e.LastName, e.ManagerID
  FROM Employees e
  JOIN RecursiveEmployeeCTE r
    ON e.ManagerID = r.EmployeeID
)
SELECT * FROM RecursiveEmployeeCTE;
				
			

ابتدا مدیر ریشه را انتخاب کرده، سپس کارکنان زیرمجموعه وی را بازگشتی واکشی می‌کند .

مثال‌های پیشرفته

شمارش کارکنان به‌ازای هر دپارتمان

				
					WITH DepartmentEmployeeCountCTE AS (
  SELECT Department, COUNT(*) AS EmployeeCount
  FROM Employees
  GROUP BY Department
)
SELECT * FROM DepartmentEmployeeCountCTE;
				
			

اینجا از CTE برای گروه‌بندی و شمارش استفاده شده است.

میانگین حقوق کارکنان هر دپارتمان

				
					WITH DepartmentAvgSalaryCTE AS (
  SELECT Department, AVG(Salary) AS AvgSalary
  FROM Employees
  GROUP BY Department
)
SELECT * FROM DepartmentAvgSalaryCTE;
				
			

متوسط حقوق هر بخش را محاسبه کرده و در CTE ذخیره می‌کند .

نکات کاربردی و محدویت‌ها

CTE فقط برای یک SELECT/INSERT/UPDATE/DELETE معتبر است و نتایج آن مجدداً اجرا می‌شوند (غیر مادی‌سازی) Microsoft Learn.

  • عدم وجود ORDER BY بدون TOP یا OFFSET/FETCH در تعریف CTE Microsoft Learn.

  • اگر بازگشتی دارید، باید حداقل یک anchor و یک قسمت Recursive تعریف کنید و UNION ALL بین‌شان باشد .

  • برای کنترل عمق recursion، از OPTION (MAXRECURSION n) استفاده کنید تا حلقه بی‌نهایت جلوگیری شود.

مزایا و کاربردهای اصلی

  • خوانایی و نگهداشت آسان: کوئری‌های پیچیده قابل تقسیم‌بندی.

  • تشخیص سریع خطا: با تست جداگانه هر CTE راحت‌تر خطاها را پیدا می‌کنیم.

  • پشتیبانی از داده سلسله‌مراتبی: بسیار مناسب برای ساختارهای tree.

  • جایگزین view یا subquery: بدون نیاز به ساخت اشیا دائمی.

  • قابلیت بازگشتی: امکان نوشتن جوین‌های سلسله‌مراتبی قوی.

اشتراک گذاری:
برچسب ها: آموزش SQL
در تلگرام
کانال ما را دنبال کنید!
در اینستاگرام
ما را دنبال کنید!
در یوتوب
ما را دنبال کنید!
Created by potrace 1.14, written by Peter Selinger 2001-2017
در آپارات
ما را دنبال کنید!

مطالب زیر را حتما مطالعه کنید

توابع ریاضی SQL
توابع ریاضی در SQL
توابع ریاضی SQL
توابع تعریف شده توسط کاربر (UDF) در SQL Server چیست؟
توابع ریاضی SQL
ویو (View) در SQL Server چیست؟
توابع ریاضی SQL
انواع داده‌ها در SQL Server چیست؟
توابع ریاضی SQL
رویه‌های ذخیره شده (Stored Procedures) در SQL Server چیست؟
توابع ریاضی SQL
SQL Joins چیست و چرا اهمیت دارد؟

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
دسته‌ها
  • DAX
  • Microsoft Excel
  • Power BI
  • Power Query
  • SQL
  • SQL Server Analysis Services (SSAS)
  • SQL Server Integration Services (SSIS)
  • SQL Server Reporting Services (SSRS)
  • آموزش های متنی
  • آموزش های ویدئویی
  • تحلیل داده
  • هوش تجاری
نوشته‌های تازه
  • توابع ریاضی در SQL
  • توابع تعریف شده توسط کاربر (UDF) در SQL Server چیست؟
  • ویو (View) در SQL Server چیست؟
  • انواع داده‌ها در SQL Server چیست؟
  • رویه‌های ذخیره شده (Stored Procedures) در SQL Server چیست؟
درباره مجموعه تحلیل داده

باور داریم که تحلیل داده یک مهارت کلیدی برای موفقیت در دنیای امروز است و می‌خواهیم شما را در این مسیر راهنمایی کنیم. اگر آماده‌اید که با داده‌ها تصمیمات هوشمندانه‌تری بگیرید، از همین حالا یادگیری را شروع کنید.

  • تهران، جنت آباد جنوبی خیابان ایثارگران
  • 09102315004
  • info@tahliledadeh.com
آخرین مطالب
  • توابع ریاضی در SQL
  • توابع تعریف شده توسط کاربر (UDF) در SQL Server چیست؟
  • ویو (View) در SQL Server چیست؟
برچسب‌ها
آموزش DAX آموزش Excel آموزش Power BI آموزش Power Query آموزش SQL آموزش SSAS آموزش SSIS آموزش SSRS تحلیل داده هوش تجاری
پرداخت ایمن
ایکون اینماد

ورود

رمز عبور را فراموش کرده اید؟

هنوز عضو نشده اید؟ عضویت در سایت