PDA

View Full Version : یک دستور پیچیده برای Query



javidtaheri
یک شنبه 14 فروردین 1384, 17:33 عصر
من جدولی دارم که دارای فیلدهای نام مشتری "Name" تاریخ خدمات "Date" کلاس "Class" وهزینه "Sum" میباشد.
فرض براین است که
1- اطلاعات برای سالهای 81 تا 83 است (تاریخ خدمات Date)
2- فیلد Class بولی است T,F
میخواهم با دستورات Sql گزارشی با اطلاعات محاسباتی زیر داشته باشم
(توجه اطلاعات در یک گرید نمایش داده شود)

"نام مشتری" "هزینه خدمات کلاس F در سال 81 " "هزینه خدمات کلاس T در سال 81 " "هزینه خدمات کلاس F در سال 82 " "هزینه خدمات کلاس T در سال 82 " "هزینه خدمات کلاس F در سال 83 " "هزینه خدمات کلاس T در سال 83 "
با تشکر :strange:

علیرضا جاوید
یک شنبه 14 فروردین 1384, 23:32 عصر
تو اسکوال استاندارد و به صورت تئوریک میتوان این کووری را نوشت ولی عملا هیچکدام از بانکهای اطلاعاتی قابلیت پیاده سازی کووری را که فیلدهای آن بصورت پویا و از داخل کووری دیگر درآمده باشند را ندارند.
از 2 کووری اسفاده کن :موفق:

yasermontazeri
چهارشنبه 17 فروردین 1384, 09:43 صبح
این کار فقط از طریق Cross Tab Query امکان پذیر هست که این قابلیت در بانک اطلاعاتی Access هست ولی من هرچه کردم در sql Server نتوانستم چنین گزارشهای دو بعدی را بگیرم که مثلا در سطر ها تاریخ و در ستونها هزینه خدمات کلاسهای مختلف ظاهر شود . اما اگر در help برنامه Sql Server جستجو کنید این کار را توسط دو query شبیه سازی کرده که یاد گرفتن آن نیز خالی از لطف نیست .

m-khorsandi
چهارشنبه 17 فروردین 1384, 22:07 عصر
درود



SELECT SUM(_Sum) as SumServices, Name, Class
FROM _CustomerServices
WHERE (((_date = 81) AND (Class = 0)) or ((_date = 81) AND (Class = 1))) or
(((_date = 82) AND (Class = 0)) or ((_date = 82) AND (Class = 1)))
GROUP BY Name, Class



شاید کمک کنه.

javidtaheri
یک شنبه 21 فروردین 1384, 08:02 صبح
دستور شما جواب نداد
SumServices را برای کدام فیلد بکار برده اید؟ :strange:

m-khorsandi
یک شنبه 21 فروردین 1384, 08:07 صبح
دستور شما جواب نداد
SumServices را برای کدام فیلد بکار برده اید؟ :strange:

SumServices رو برای فیلد "هزینه ها - Sum" گرفتم.