سلام
همانطور که قبلاً گفتم، باید اول مشکل را در سطح دستور SELECT در SQL رفع کرد و سپس به سراغ ابزار گزارش گیری رفت.
==============
من در اولین قدم نوع برخی فیلدهای دیتابیس شما را ویرایش کردم، چون متاسفانه از نوع منطقی استفاده نکرده بودید.
الآن در رایانه من...
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
لطفاً در صورت تفاوت، فیلدهای خود را چنین اصلاح کنید، وگرنه ممکن است دستورات بعدی ...
(
فیلدهای شما به نظر بزرگتر از حد لازم می آید...
مثلاً ...
اگر موسسه شما روزی 1000 ثبت نام جدید داشته باشد، میشود ماهی 30000 و سالی 365000 !
که بیشتر از 5883 سال (پنج هزار سال معادل 50 قرن!) طول خواهد کشید تا محدوده int را برای جدول Customer پر کند!!!
پس از نظر منطق و اثبات ریاضی هیچ دلیلی وجود ندارد که CuId از نوع bigint باشد.
ضمن اینکه من بعید میدانم موسسه شما روزی 1000 و ماهی 30000 ثبت نام داشته باشد!
معمولاً خیلی از دوستان int را دست کم میگرند و بدون هیچ پیشبینی منطقی ریاضی از محدوده اعداد مورد نیاز به صرف دم دست بودن int آن را کنار میگذارند!
بهحرحال اینها فقط یک پیشنهاد هستند و صلاح برنامه خود را شما بهتر میدانید.
)
==============
یک تابع با کد زیر ایجاد کنید:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این تابع وظیفه استخراج اطلاعات در یک محدوده Customer.Rank مشخص را دارد.
(
ضمناً نمیدانم برای چه و به چه معنا یکسری از فیلدهای Period.DiId شما NULL هستند؟
فردی بدون بیماری مشخص؟
این میتواند یک وضعیف غیر نرمال در سطح دیتابیس باشد که در صورت بررسی و صحت باید جلوی آن گرفته شود.
ناچاراً دستوری برای نادیده گرفتن این مقادیر اضافه کرده!
)
==============
یک View نهایی با کد زیر ایجاد کنید:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خروجی این View مشابه همان جدولی است که در فایل doc توصیفش کرده بودید.
(نباید ایرادی داشته باشد، من هم چک نکردم، شاید بد نباشد یکبار صحت اعداد و ارقام خروجی را چک کنید.)
==============
حالا خروجی آمده اطلاعات را دارید.
مابقی کار میشود ساخت گزارش (کسل کننده!) مورد نظر از GetStatistic در برنامه گزارش سازتان.
موفق باشید.