تبدیل سطر به ستون در SQL Server

بپرسید
  • Arash43 Arash43
  • 100 ماه قبل
  • 100 ماه قبل
  • 1380 نمایش

0

{{ digitTrunc(content.likes) }}

با سلام خدمت دوستان

سناریویی را با این مورد در نظر بگیرید:

بازرسان یک مجموعه باید طبق برنامه ی زمانبندی که برایشان مشخص شده است در یکسری از ادارات می بایست حداقل 5 بار حضور داشته باشند.(در هر ماه)

به طور مثال آقای X در تاریخ 941020 در اداره X حضور داشته باشد (تعداد این ادارات 5 تا است.)

آقای X در تاریخ 941025 در داره Y باید حضور داشته باشد. و همینطور برای کلیه کاربران.

حال در جدول دیگری وضعیت حضور و غیابشان به همراه نوع غیبت (موجه یا غیر موجه) ثبت خواهد شد.

به طور مثال آقای رمضانی در تاریخ 941020 در اداره X حضور نداشته و غیبتش هم غیر موجه بوده.

دوباره همین آقا در تاریخ 941025 در اداره X حضور داشته.

با این حال همچین گزارشی از جدول فوق انتظار می رود:

نام بازرس اداره شماره 1 اداره شماره 2 اداره شماره3 اداره شماره 4 اداره شماره 5 تعداد غیبت.

نکته اگر در یک اداره ای بیش از یک غیبت وجود داشت می بایست در داخل همان ستون تاریخ مربوط به غیبت را با یک ویرگول از هم جدا کند. و در ستون آخر نیز تعداد کل غیبت ها شخص را در آن بازه زمانی که کاربر گزارش می گیرد برایش نمایش دهد.

گزارش فوق را بنده با 6 تابع مجزا نوشته ام !5 تابع برای هر کدام از ادارات و یک تابع برای غیبت! و با روش SQL Concatenate

ولی این راه اصولی نیست،طوری که فردا روزی دو اداره دیگر اضافه شود می بایست دوباره 2 تابع مجزای دیگر برای آن ادارات نوشته و در آخر آن را در SP فراخوانی کنم.

ممنون میشم اگر راهنمایی بفرمایید که بنده چظور این موضوع رو به شکل بهینه و داینامیک ایجاد کنم.

با سپاس

گزارش
دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

پاسخ ها به این سوال

پاسخ ها به این سوال

{{ digitTrunc(post.likes) }}

این پست در تاریخ {{ dateString(new Date(post.deleteDate)) }} توسط {{ post.deletedByUser }} حذف شده است.

دلیل حذف: {{ post.deleteReason ?? 'نامشخص' }}

{{ err }}
{{ post.userAchivements.rhodiumAchievements }}
{{ post.userAchivements.platinumAchievements }}
{{ post.userAchivements.goldAchievements }}
{{ post.userAchivements.silverAchievements }}
{{ post.userAchivements.bronzeAchievements }}
{{ timeSince(new Date(post.date)) }} قبل

برای ثبت پاسخ خود در وب سایت وارد حساب کاربری خود شوید
قابلیت ارسال مطلب توسط مدیریت سایت غیر فعال شده است