PDA

View Full Version : Select زدن تو در تو جمع ستون ها با شروط متفاوت



kitcat_m18
جمعه 15 خرداد 1394, 12:51 عصر
سلام یه سلکت زدم به این صورت:





Select
'01025001000000000000000000000' as MyKcod,
T1.F_CodeIndependent,
Sum(T1.F_Bed) As SumBedCodeIndependent,
MAx(T2.F_CodeTotal) As F_CodeTotal,
MAx(T2.SumBedCodeTotal) As SumBedCodeTotal


From


(
Select
Max(F_Kcod) As F_Kcod,
MAx(F_CodeTotal) As F_CodeTotal,
Sum(F_Bed) As SumBedCodeTotal
From T_Document_93
Where LEFT(F_Kcod,5)=LEFT('01025001000000000000000000000 ',5)
Group By F_CodeIndependent
)


T2 Right join T_Document_93 T1 on T1.F_Kcod=T2.F_Kcod


Where LEFT(T1.F_Kcod,2)=LEFT('01025001000000000000000000 000',2)
Group By F_CodeIndependent





اینم خروجی




SumBedCodeTotal
F_CodeTotal
SumBedCodeIndependent
F_CodeIndependent
MyKcod


195000
025
1564582227
01
01025001000000000000000000000









همونطور که مشخصه یه بار اومدم اونایی که Left فیلد F_Kcod به طول 2 برابر مقدار داده شده است رو در آوردم و جمعش رو نشون دادم و بعد یه بار اومدم اونایی که Left فیلد F_Kcod به طول 5 برابر مقدار داده شده است رو در آوردم و جمعش رو نشون دادم.

این قسمت برای یه برنامه حسابداریه که می خوام در سطوح مختلف حسابداری (مستقل، کل، معین و ..) جمع ها رو به دست بیارم

من در حال حاضر باید اینکارو برای 10 سطح کدینگ انجام بدم که باعث نوشتن یه کوئری بزرگ میشه
حالا می خوام بدونم راه بهتری برای این کار هست یا نه

reza_ali202000
یک شنبه 17 خرداد 1394, 17:38 عصر
فکر میکنم برا تزارآزمایشی میخوای.
اگه f_kcod ها ثابت هستن(منظورم رشته از پیش تعریف شده مثلا 10 یعنی معین) هیچ راه دیگه ای نیست ولی اگه از پیش تعریف شده نیستن میتونی اونا رو توی یه جدول تمپ ذخیره کنی بعد با هر بار سکلک اون تمپ این سلکت برای اون کد اتفاق بیافته که در عمل میتونی توی یه ویو تمامش رو ملاحظه کنی.