PDA

View Full Version : سئوال در مورد ساخت کوئری تراز حسابداری



ahsaya
پنج شنبه 19 بهمن 1391, 12:41 عصر
با سلام
در جدول تعریف حساب tbl1 که دارای فیلدهای Acc_Code,Name,Gru_Code,BedBes,Bank,HasChild,AccLev el است هر حساب معرفی می شود .

اطلاعات اسناد در tbl2 ذخیره می شود که دارای فیلدهای SerialNumber,BandNo,lBandNo,Acc_Code,Bede,Best است .

حالا من به دنبال کوئری هستم که با آن گزارش تراز حسابها رو بگیرم .

گزارش تراز من هم باید به نحوی باشد که جمع ارقام بدهکار و بستانکار حسابهای مختلف در اسناد مختلف رو بگیرد و تحت عنوان بدهکار و بستانکار در ستون بدهکار و بستانکار بیاورد و نتیجه آنها را در ستونهای مانده بدهکار و مانده بستانکار بیاورد .


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

محمد سلیم آبادی
پنج شنبه 19 بهمن 1391, 21:34 عصر
ممکنه راجب گزارش تراز توضیح بدین.
لطفا بر اساس داده های نمونه نتیجه مورد نظر خود را شرح دهید.

ahsaya
شنبه 21 بهمن 1391, 11:09 صبح
با سلام و تشکر از توجه دوستان

همانطور که گفته شد در جدول tbl1 حسابها تعریف می شوند :

عکس ضمیمه 1 : 99806


در جدول tbl2 هم اطلاعات مربوط به اسناد وارد می شوند :

عکس ضمیمه 2 : 99807

حالا نیاز به ساخت گزارشی به شکل عکس ضمیمه 3 هست تا با آن گزارشی تحت عنوان گزارش تراز را ساخت

عکس ضمیمه 3 : 99808


ملاحظات :
در گزارش لازم است هر کد حساب به صورت جمع بدهکار و جمع بستانکار و مانده بدهکار و مانده بستانکار نمایش داده شود .

در انتهای گزارش نیاز هست که جمع هر ستون نمایش داده شود .

همیشه جمع بدهکار با جمع بستانکار برابر است .

همیشه مانده بدهکار در انتهای گزارش با مانده بستانکار برابر است .


باز هم از محبت دوستان تشکر می کنم .

محمد سلیم آبادی
شنبه 21 بهمن 1391, 11:54 صبح
این را امتحان کنید. فقط باید نام ستون ها را مطابق جدولتان بنویسید.

select t.shomare_hesab,
t.hesab_name,
bedehkarTotal,
bestankarToral,
case when bedehkarTotal - bestankarToral > 0 then
bedehkarTotal - bestankarToral else 0 end as bedehi,
case when bestankarToral - bedehkarTotal > 0 then
bestankarToral - bedehkarTotal else 0 end as bedehi,
sum(bedehkarTotal) over(),
sum(bestankarToral) over()
from
(
select shomare_hesab,
sum(bedehkar) bedehkarTotal,
sum(bestankar) bestankarToral
from table_2
group by shomare_hesab
)d
inner join table_1 t
on d.shomare_hesab = t.shomare_hesab;

ahsaya
شنبه 21 بهمن 1391, 18:56 عصر
با سلام و تشکر از شما

کد رو من تست کردم . اما در خطوط 9 و 10 همچنان مشکل دارم و با خطا SQL مواجه می شوم .

باز هم از شما تشکر می کنم

محمد سلیم آبادی
شنبه 21 بهمن 1391, 21:28 عصر
نکنه نسخه اسکیولتون 2000 هست؟
در آن نسخه امکان استفاده از توابع تجمعی window وجود ندارد.

ahsaya
دوشنبه 23 بهمن 1391, 07:44 صبح
با سلام و تشکر از شما

نخیر از SQL2005 استفاده می کنم .

محمد سلیم آبادی
دوشنبه 23 بهمن 1391, 08:03 صبح
اما در خطوط 9 و 10 همچنان مشکل دارم و با خطا SQL مواجه می شوم .
لطفا متن خطا را در اینجا قرار دهید تا بررسی شود