معرفی
این مقاله به یافتن گزارش حضور (در قالب جدول) همه دانشآموزان/کارمندان برای بازه زمانی بین دو تاریخ، اعم از حضور یا غیبت، با استفاده از رویه ذخیرهشده در SQL Server کمک میکند .
در مورد رویه ذخیره شده در SQL Server- Stored Procedure اطلاعات بیشتری پیدا کنید
خروجی نمونه
نام | 01-07-2016 | 02/07/2016 | 03/07/2016 | 04/07/2016 | 2016-07-05 | 2016-07-06 | 07/07/2016 |
آ | حاضر | حاضر | حاضر | N/A | N/A | N/A | N/A |
م | حاضر | حاضر | حاضر | N/A | N/A | N/A | N/A |
در اینجا من از یک جدول استفاده کردم که وضعیت حضور هر دانش آموز را نشان می دهد. خروجی عمدتاً در قالب جدولی ارائه می شود. برای بدست آوردن خروجی مورد نیاز از Dynamic Pivot در SQL استفاده کردم.
قبل از آن، باید بدانیم که Pivot چیست. عمدتاً Pivot تکنیکی برای چرخاندن داده ها از یک ردیف به یک ستون است.
در زیر چند مرجع خوب برای Pivots وجود دارد.
در اینجا نیز از یک پرس و جو پویا (برای تولید کد SQL به صورت برنامه نویسی) استفاده می شود.
با استفاده از کد
ابتدا یک جدول مانند شکل زیر ایجاد کنید.
اکنون داده ها را در جدول وارد کنید. در اینجا من رکوردها را بر اساس تاریخ درج کردم.
جولای
آگوست
اکنون یک Stored Procedure با دو پارامتر ورودی DateTime ایجاد کنید.
در SP، تاریخ ها بین دو تاریخ با استفاده از عبارت Common Table ایجاد می شوند و سپس با کاما از هم جدا می شوند. در نهایت، SQL پویا را برای دریافت خروجی بسازید.
اکنون تاریخ های بین دو تاریخ را با استفاده از عبارت Common Table ایجاد کنید و مقادیر را در یک جدول موقت (#TMP_DATES) ذخیره کنید.
از آنجایی که ستونهای گزارش (Dates) پویا هستند، بنابراین ستونهای (Dates) یکی یکی از جدول موقت (#TMP_DATES) به هم متصل میشوند و مقدار را در یک متغیر محلی ذخیره میکنند.