سلامhttps://barnamenevis.org/images/misc/pencil.png
پيشنهادتون براي ساخت گزارش آمار ساليانه، چيزي مثل تصوير زير از بانک اطلاعاتي پيوست چيه؟
(آمار تعداد نمونه ارسالي از شهرها، براي انجام تستهاي مختلف)
Printable View
سلامhttps://barnamenevis.org/images/misc/pencil.png
پيشنهادتون براي ساخت گزارش آمار ساليانه، چيزي مثل تصوير زير از بانک اطلاعاتي پيوست چيه؟
(آمار تعداد نمونه ارسالي از شهرها، براي انجام تستهاي مختلف)
ممنوم مي شم راهنمايي بفرمائيد.
با سلام
شما بهتر است از كوئري Crosstab استفاده نماييد.
با تشكر
امکان داره یه نمونه بذارید؟ ممنون می شم
سلام
بزرگوار جمع رديف (سالانه هر شهر: عمودي آخر) بدست مياد ولي جمع ستوني (تمام شهرها در يك ماه: رديف افقي آخري) چطور مي شه اضافه كرد؟
ممنون مي شم راهنمايي بفرمائيد.
سلام
منتظر راهنمايي شما هستم
سلام
گزارشهای کراس نمونه مورد نظر جنابعالی را تامین می کند نمونه های جالبی در همین سایت موجود می باشد
دوست عزيز همونطور که دوستان فرمودند شما از CrossTab Query استفاده کن البته توي رديفات از شهر و ماه استفاده کن و در ستونهات از نوع نمونه ارسالي شهرها بذار يا نوع فروش يه جستجو بزن حتما پيدا مي کني
سلام
سرچ كردم ولي هر دو رديف (افقي و عمودي) نبود.
سلام
لطفا گزارش كراس تب رو ببينيد:
.....................
موفق باشيد
سلام
ممنونم از نمونه پيشنهادي شما
بزرگوار جمع رديف (سالانه هر شهر: عمودي آخر) بدست مياد ولي جمع ستوني (تمام شهرها در يك ماه: رديف افقي آخري) چطور مي شه اضافه كرد؟
سلام
دوست عزیز با داشتن کوئری مورد نظر که بتونه اعداد ارقام شمارو حساب بکنه کارشما قابل انجام هستش.
بقیه کار میشه طراحی فرم گزارشی که دلخواه شماست.(قراردادن فیلد sum جهت جمع عمودی)
امیدوارم کوئری مورد نظر همین باشه، طراحی گزارش باشما.
موفق باشید
دوست من سلام. ممنونم از راهنمایی شما
من تاريخ رو به صورت عدد وارد مي کنم مثل (17/10/1389)، چطور مي تونم به صورت "ماه" يعني فروردين و ... اين کوئري رو درست کنم؟
با شرط iif مي شه يه فيلد گذاشت که اين تبديل رو انجام بده ولي براي کوئري که نمي شه از اون فيلد استفاده کرد، اينو چکار کنم؟ چون کوئري، سرستون رو به صورت هر يک روز نشون مي ده نه يک ماه
سلام
منبع داده کوئری را به شکل زیر تغییر دهید
TRANSFORM Sum([test1]+[test2]+[test3]+[test4]+[test5]+[test6]) AS Expr1
SELECT Table.address, Sum([test1]+[test2]+[test3]+[test4]+[test5]+[test6]) AS Expr2
FROM [Table]
GROUP BY Table.address
PIVOT Mid([date],6,2);
سلام دوست من
ممنونم از راهنمایی شما. بزرگوار اگه تاریخ رکوردها بیشتر از یکی در ماه باشه، فقط اولی رو محاسبه می کنه. بعدی ها رو شامل نمی شه. مثلا اگه سه تا رکورد شیراز، یک تاریخ ثبت داشته باشند (1389/02/20) دوتای آخری در نظر گرفته نمی شند. چرا؟
سلام
اگر گزارش را براساس آخرین جواب تغییر دهید درست عمل می کند
سلام دوست من
منظورتون اینه که یه گزارش بر مبنای کوئری با دستوری که دادید بسازم؟ این کار رو کردم ولی تغییر نکرد.
سلام دوست من ممنونم، بسيار عالي بود احسنت :تشویق::تشویق::تشویق::تشویق:
بزرگوار اگه بخوام فقط تعداد رکودهاي مربوط به يک شهر، در جمع هر ماه آورده بشه (نه جمع تستها) چي؟ منظورم اينه که در اين نمونه که لطف کرديد گذاشتيد، در ارديبهشت، 3 رکورد مربوط به شيراز هست، نتيجه کوئري اين بشه که در ارديبهشت، جلوي شهر شيراز، عدد 3 قرار بگيره.
باز هم تشکر مي کنم. لذت بردم
ممنونم مي شم راهنمائي بفرمائيد.
سلام
آرمان جان خوشحالم که داری به چیزی که میخوای نزدیک میشی...م. :چشمک: تشکر کردن :تشویق:
راجع به تغییرات جدید یه کم توضیح بده
آیا به ریز تستها دیگه نیازی نیست فقط تعداد روزهای تست هرماه نیازه!؟
اگه فقط تعداد روزهای تست مورد نظره اینو ببین..
درمورده گزارشگیری هم راستشو بخوای متوجه منظورت نشدم.! :متفکر:
سلام دوست خوب و عزیز من. عالی بود :تشویق::تشویق::تشویق::تشویق:: شویق::تشویق::تشویق::تشویق::ت ویق::تشویق:
بسیار بسیار از راهنمایی های دقیق و بیان مودبانه شما سپاسگزارم
دقیقا همون چیزی بود که می خواستم، که با پاسخ های زیبای شما به نتیجه رسیدم. لذت بردم. واقعا ممنونم :قلب:
بزرگوار با توجه به اينكه مثلا Test3 براي همه ركوردها انجام نمي شه اگه بخوام فقط اين ركورها رو آمارگيري كنيم (ركوردهايي كه Test3 اونها، مقدار داره)، كوئري چه تغييري مي كنه؟
با آرزوی موفقیت شما
امیدوارم همیشه شاد و سلامت باشید
باز هم صمیمانه تشکر می کنم :بوس:
سلام دوست من
اگه منظورتون واکشی اطلاعات از جدول اصلی هستش کوئری اینه:
SELECT *
FROM [Table]
where test3 <> 0
سلام دوست من
منظورم اضافه كردن اين شرط (ركوردهايي كه Test3 اونها، مقدار داره) در همون كوئري نمونه اي كه گذاشتيد هست:TRANSFORM count(address) AS Expr1
SELECT Table.address, count(address)
FROM [Table] LEFT JOIN Tmah ON Mid(Table.date,6,2)=Tmah.mahNum
GROUP BY Table.address
PIVOT Tmah.mahName;
آهان
کافیه سطر شرط where در پست قبلی رو بعداز سطر from در کوئری خودتون وارد کنید.
موفق باشید
دوست من با چه زبوني از شما تشكر كنم :بوس::بوس::بوس:
بزرگوار از اينكه سريع جواب داديد هم ممنونم
شاد باشيد
سلام دوست من
1- بزرگوار اگه بخوام در نمونه اي كه لطف كرديد گذاشتيد (tstNew.rar)، جاهايي كه جواب نداره، عدد صفر نمايش بده (الان جاي خالي نشون مي ده) چه تغييري در كد نياز هست؟
2- چطوري مي شه شماره رديف ها رو كنار نام شهرها گذاشت؟ (شماره گذاري تعداد ركوردهاي نمايش داده شده در نمونه tstNew.rar)
ممنون مي شم راهنمائي بفرمائيد.
سلام دوست من
این کوئزی برای سوال 1 هستش
TRANSFORM IIf(Count(Table.address) Is Null,'0',Count(Table.address)) AS Expr1
SELECT Table.address, count(address)
FROM [Table] LEFT JOIN Tmah ON Mid(Table.date,6,2)=Tmah.mahNum
GROUP BY Table.address
PIVOT Tmah.mahName;
سلام دوست من
ممنونم
دوست عزيزم. من هم براي ريپورت مي خوام. منظورتون رو متوجه نشدم از3- بزرگوار چطور مي شه ترتيب شهرها رو تغيير داد؟ (از دستور Siwch اگه بشه توي اون كوئري كه لطف كرديد گذاشتيد، كدام قسمتش قرار بدم؟)نقل قول:
چرا نمیبری ریپورت ایجاد کنی؟
چه ترتیبی مدنظر هستش عزیز.؟
سلام دوست خوب من
مثلا در ابتدا، به ترتیب حروف الفباباشه. همچنین در منوی شهرها گزینه ای به نام "متفرقه" دارم که می خوام آخرین گزینه (بعد از آخرین شهر) نمایش داده بشه.
چون تعداد رکوردها زیاد هست نمی تونم ID منو رو تغییر بدم تا ترتیب، از اونجا (ID جدول منو) تغییر کنه.
بزرگوار در مورد سوال دوم: "شماره گذاري تعداد ركوردهاي نمايش داده شده " ممنون می شم بیشتر راهنمایی بفرمائید. :قلب:
سوال چهارم: در نمونه (tstNew.rar) فقط زمانی ماه ها دیده می شند که حداقل یک رکورد در اون ماه ثبت شده باشه، حتی نام ماه هم در سرستون دیده نمی شه که عدد صفر در مقابل نام شهرها نمایش داده بشه. پیشنهادتون برای دیده شدن نام ماه ها، زمانی که رکودی ندارند چیه؟
سلام دوست من
جواب سوالها بترتیب شماره نیست، بترتیب سواد منه :لبخند:
کار سختی نیست فقط کافیه شرط join جدول اصلی با جدول ماه رو از چپ به راست عوض کنی( حتما و حتما که به دستورات SQL تسلط داری دوست من)نقل قول:
سوال چهارم: در نمونه (tstNew.rar) فقط زمانی ماه ها دیده می شند که حداقل یک رکورد در اون ماه ثبت شده باشه، حتی نام ماه هم در سرستون دیده نمی شه که عدد صفر در مقابل نام شهرها نمایش داده بشه. پیشنهادتون برای دیده شدن نام ماه ها، زمانی که رکودی ندارند چیه؟
و اما این مورد
مثلا در ابتدا...!؟ یعنی ترتیب دیگه ای هم مدنظر هست؟ و راجع به شهر متفرقه عرض شود که...نقل قول:
مثلا در ابتدا، به ترتیب حروف الفباباشه. همچنین در منوی شهرها گزینه ای به نام "متفرقه" دارم که می خوام آخرین گزینه (بعد از آخرین شهر) نمایش داده بشه.
چون تعداد رکوردها زیاد هست نمی تونم ID منو رو تغییر بدم تا ترتیب، از اونجا (ID جدول منو) تغییر کنه.
میتونی مثل ماهها یه جدول جدا براشون درست کنی و برای هر شهر یک شماره (کلید اصلی) که نشان دهنده ترتیب هستش قراربدی و در کوئری با استفاده از join ترتیب شهر را طوری داشته باشی که برنامه نویس یا کاربر میخواد.
البته (تخصصی تر) بخاطر جلوگیری از افزونگی اطلاعات باید از کلید اصلی جدول شهرها بجای نام اونها در جدول ثبت اطلاعات استفاده کنید.
راستی گفتی چندتا شهر داری؟
سلام دوست خوب من
بسیار سپاسگذارم بابت راهنمائی های کامل شما :تشویق::تشویق::تشویق:
در مورد سوال اول تشکر ویژه دارم برای کد پیشنهادیتون در 32#. عزیز چطور می شه برای ماههایی که هنوز نیامده (مثل اسفند)، خالی یا خط تیره قرار بگیره ولی برای ماهای گذشته اگر رکورد نداشتند، صفر نمایش داده بشه؟
در مورد سوال دوم: "شماره گذاري تعداد ركوردهاي نمايش داده شده" هم که بیشتر راهنمائی نکردید. منتظریم :چشمک:
سوال سوم هم که ترتيب شهرها بود،30 تا شهر دارم.نقل قول:
راستی گفتی چندتا شهر داری؟
منظورم این بود که اگه به ترتیب الفبا باشه گزینه متفرقه آخر قرار نمی گیره (چند تا مانده به آخر می شه که من لازم دارم حتما آخرین آیتم قرار بگیره و همچنین جالب هم نیست بین بقیه شهرها باشه)نقل قول:
ترتیب دیگه ای هم مدنظر هست؟
سوال چهارم در مورد نمایش نام ماههای بدون رکورد بود. منظورتنون:قلب: تبدیل LEFT JOIN به RIGHT JOIN بود دیگه؟ :قلب::قلب:
سلام دوست من
یه نگاه اجمالی به سوالات میندازیم ببینیم چی به چیه:
سوال اول : عوض کردی سوالتو.نه!؟
بابت قسمت اضافه شده باید سیستم تاریخ زنی داشته باشی که بتونی تاریخ روز بگیری ، تازه بعدش کوئری تشخیص بده کدوم ماه سال رد شده و یا کدوم نرسیده (خلاصه باید تاریخ روز شمسی داشته باشی).
سوال دوم : "شماره گذاري تعداد ركوردهاي نمايش داده شده"
کاش مثل پست اول نمونه میزاشتی که چی مدنظر هستش.
سوال سوم : "ترتيب شهرها"
روی توضیحی که پست قبلی دادم کار کن مسئله ای بود حلش میکنیم.
سوال چهارم : :"نمایش نام ماههای بدون رکورد"
دیگه خودتون اهل فن اید.
موفق باشید.
دوست عزیزم خیلی مخلصیم
آقا بسیار ممنونم از لطف شما :بوس::بوس::بوس:
بزرگوار منظورم از "شماره گذاري تعداد ركوردهاي نمايش داده شده" اینه که توی گزارشگیری بتونم شماره ردیف اضافه کنم. به نظر شما این کار رو از کوئری انجام بدم یا از ریپورت بهتره؟ برای انجام این کار چه کدی لازم دارم؟ می خوام مثل ترتیب زیر نمایش داده بشه (اعداد قرمز رنگ):
1- شیراز 0 2 4 0
2- کرمان 1 2 5 0
3- یزد 0 1 2 1
و سوال پنجم: چطور مي شه گزارش اين كوئري رو به صورت يك در ميان سايه روشن كرد؟
سلام دوست عزیزم
حدسم درست بود، بله جواب شما برای اینکار( هم سوال 2و هم5) بهترین کار استفاده از ریپورت هستش. در طراحی ریپورت هم میشه ستون ردیف ایجاد کرد هم میشه یک در میون سایه روشن با هر رنگی که دوست داری ایجاد کرد.
یه همچین شکلی باید بشه خروجی ریپورت
ریپورت ایجاد کن اگه نشد آپلود کن ببینیم مسئله چیه...
موفق باشید
دوست خوبم محبت کردید
در مورد "ترتيب شهرها": از اول برای شهرها جدول درست کرده بودم و متاسفانه ترتیب اونا اون موقع مهم نبود و رعایت نکردم و الان لازم شده که اگه شماره (کلید اصلی) اونها رو عوض کنم با حدود دوهزار رکورد، امکان تغییرشون بر اساس ترتیب جدید، ممکن نیست. فکر کنم دستورSwitch بی ربط با این تغییر ترتیب نباشه. درسته؟
Switch(city="kerman", 1, city="shiraz", 2 )
عزیزم شماره ردیف در ریپورت چطور اضافه می شه؟ tstNew3.rar
راستی راجع به ترتیب شهرها و ....
عرض شود که ماهی و هروقت از آب بگیری تازست، تا تعداد رکوردهات میلیونی نشده( که دراین صورت کوئری تغییرات 2یا 3 دقیقه طول میکشه) اینکارو انجام بده تا خیالت راهت بشه.
در ضمن بقول برنامه نویسا یه کلک مرغابی هم میتونی بزنی.
واما کلک: :چشمک:
توی تیبل شهرهات( یادمه گفتی 30تا بیشتر نیست) اول نام تمام شهرها یه کلمه "شهر" اضافه کن بجز "متفرقه".
یا
توی تیبل شهرهات( یادمه گفتی 30تا بیشتر نیست) اول نام تمام شهرها یه "[space]" اضافه کن بجز "متفرقه".
اینجوری هیچ کد نویسی برای آپدیت تیبلهات نیاز نداری، چون درهر دو صورت "متفرقه" آخر لیست هستش(مرتبسازی حروف الفبا).
موفق باشید.
دوست عزیز و استاد بزرگوارم بسیار استفاده کردم از راهنمایی های کامل و گویای شما خیلی لطف کردید مخصوصا جواب دادن سریع تان موفق و پیروز باشید :قلب::تشویق::بوس:
دوست من وقتي شرط زير رو ميذارم در رديف اول يك سري صفر اضافه مي شه كه نمي دونم دليلش چيه هيچ اسم شهري هم جلوش نيستWHERE (((tbl1388.city)<>0))
سلام دوست من
برای یادآوری تاپیک رو مرور میکردم.
برنامه خوب پیش میره؟
نگفتید از چه روشی تیبل و کوئریهارو پیاده سازی کردید، کاش میگفتید یا نمونه میذاشتید ببینیم این سطر چیه... :متفکر:
بجای 0 از null استفاده کنید ببینید جواب میده؟
موفق باشید.
دوست خوب من با راهنمائي هاي عالي شما مگه مي شه برنامه خوب پيش نره. :چشمک::لبخندساده: واقعا ممنونم. بزرگوار اون تغييراتي بود كه از شما راهنمائي خواستم، براي سال جديد توي يه ديتابيس ديگه اعمال كردم و يه لينك گذاشتم به سال 89 از بانك 90. چون نمونه هام از شماره يك دوباره شروع مي شه يه ديتابيس جديد اختصاص دادم هم براي احتياط و هم براي افزايش سرعت ولي چيزي كه محدود مي كنه جستجوهام هست كه نمي تونم دامنه تاريخ رو بيش تر از يك سال بدم. شبيه به اين مورد داشتيد؟ چكار كرديد؟
دوست عزيزم در مورد آمار ساليانه هم در كد زير اگه اين كد رو:
WHERE (((Table.address)<>0))
اضافه نكنم يه رديف صفر مثل تصوير پست قبلي اضافه مي كنه و اگر اين كد رو اضافه كنم براي ماه هاي آينده كه ركورد نداره خطا مي ده كه اگه اون ماه رو در گزارش حذف كنم خطا نمي ده. من مي ذاشتم وقتي كه ركورد در ماه جديد وارد شد اون وقت فيلد ماه جديد رو به گزارش اضافه مي كردم. فكر مي كنم تغييري توي كد لازم باشه. تا پيشنهاد شما چي باشه.
TRANSFORM IIf(Count(Table.address) Is Null,'0',Count(Table.address)) AS Expr1
SELECT Table.address, count(address)
FROM [Table] LEFT JOIN Tmah ON Mid(Table.date,6,2)=Tmah.mahNum
GROUP BY Table.address
PIVOT Tmah.mahName;
لطف شما رو فراموش نمي كنم :قلب: :قلب: :بوس:
پيشاپيش سال نوي شما مبارك
سلام
سال نوی شما هم مبارک دوست من
جدا کردن دیتابیس سالهای مختلف این دردسرهارو هم داره، باید یه فکری واسش بکنی.نقل قول:
براي سال جديد توي يه ديتابيس ديگه اعمال كردم و يه لينك گذاشتم به سال 89 از بانك 90. چون نمونه هام از شماره يك دوباره شروع مي شه يه ديتابيس جديد اختصاص دادم هم براي احتياط و هم براي افزايش سرعت ولي چيزي كه محدود مي كنه جستجوهام هست كه نمي تونم دامنه تاريخ رو بيش تر از يك سال بدم. شبيه به اين مورد داشتيد؟ چكار كرديد؟
اگه با گزارش گیری سالهای قبل در سال جاری خیلی کار داری پیشنهاد میدم حتما دیتا یکی بشه( آسونترین راه)... راستی تعداد فیلدها به چندتا رسیده که یکی بودن دیتابیس سالهای مختلف سرعتو کم میکنه!!؟؟
در ضمن، اگه تیبل داده های سال قبل لینک هستن به دیتای سال جاری با کد نویسی میتونی بهشون دسترسی داشته باشی و گزارش گیری کنی.
در مورد قسمت دوم سوالتون:
مطمئنا برنامتون تا حالا خیلی فرق کرده، یه نمونه جدید میتونه خیلی کمک کنه که سریعتر این مشکلتون حل بشه.
موفق باشید.