View Full Version : محاسبه مانده بدهکار و بستانکار
mortezahbh
پنج شنبه 29 آبان 1393, 10:46 صبح
با سلام
یک کد SQl میخوام که جمع بدهکاری و بستانکاری مشتری رو حساب کنه و از هم کم کنه تا مقدار مانده بدهکار یا بستانکار مشخص شه
و به این صورت نمایش بده
Id
Name
Bedehi
Bestankari
Mande
Vaziyat
1
Ali
3.500.000
3.000.000
500.000
Bedehkar
2
Ahamad
4.000.000
5.000.000
1.000.000
Bestankar
با تشکر
mortezahbh
جمعه 30 آبان 1393, 18:31 عصر
دوستان کسی نظری نداره؟؟
یا اگه متوجه نشدید بگید تا بیشتر توضیح بدم
یک راهنمایی کوچیکم بکنید ممنون میشم:قلب:
mahllaa
جمعه 30 آبان 1393, 19:21 عصر
خب تا جایی که من میدونم برای جمع باید از تابع sum استفاده کنید
sum(bedehkari)
sum(bestankari)
برای اینکه بتونید اینارو جمع کنید فکر کنم باید از دستور group by id استفاده کنید
و برای نمایش هم که از select میتونید استفاده کنید
mortezahbh
جمعه 30 آبان 1393, 19:33 عصر
حرف شما درسته
حالا برای اینکه تفاوت مبالغ بدست بیاد و وضعیت بدهکاری و بستانکاری مشخص شه چه راهی دارم؟
mahllaa
جمعه 30 آبان 1393, 22:02 عصر
حرف شما درسته
حالا برای اینکه تفاوت مبالغ بدست بیاد و وضعیت بدهکاری و بستانکاری مشخص شه چه راهی دارم؟
خب راستش من خودم هم تازه کار هستم و مبتدی
اما فکر کنم اگر بشه تفریق مبالغ رو بدست اورد و بعد با شرط اینکه مثلا اگر عدد از صفر بشتر باشه بدهکار و یا کمتر باشه بستانکار نوشته بشه
من همینا به ذهنم رسید امیدوارم به دردتون بخوره
ham3d1988
شنبه 01 آذر 1393, 13:01 عصر
سلام
جداول اصلی چه فیلدایی دارن
pezhvakco
شنبه 01 آذر 1393, 16:36 عصر
شاید این باشه
SELECT ID, Name, Bed, Bes
,(Case When Bed > Bes
Then (Bed - Bes)
Else (Bes - Bed)
End) AS Mande
,(Case When Bed > Bes
Then 'Bedehkar'
Else (Case When Bed < Bes
Then 'Bestankar'
Else '--'
End)
End) AS Vaziyat
FROM dbo.Table01
mortezahbh
شنبه 01 آذر 1393, 17:03 عصر
شاید این باشه
SELECT ID, Name, Bed, Bes
,(Case When Bed > Bes
Then (Bed - Bes)
Else (Bes - Bed)
End) AS Mande
,(Case When Bed > Bes
Then 'Bedehkar'
Else (Case When Bed < Bes
Then 'Bestankar'
Else '--'
End)
End) AS Vaziyat
FROM dbo.Table01
ممنون از تمامی دوستان
ببینید من با این دستور اطلاعات بدهکاری و بستانکاری هر دانشجو رو حساب می کنم
SELECT t1.ID, t1.fname, t1.lname, t1.stunum, t1.mobile, Bedehi, Pardakhti
FROM (SELECT students.ID, students.fname, students.lname, students.stunum, students.mobile, SUM(Debts.price) as Bedehi
FROM students LEFT JOIN Debts on students.ID = Debts.student_id
GROUP BY students.ID, students.fname, students.lname, students.stunum, students.mobile) as t1
LEFT JOIN
(SELECT students.ID, students.fname, students.lname, students.stunum, students.mobile, SUM(Receipts.price) as Pardakhti
FROM students LEFT JOIN Receipts on students.ID = Receipts.student_id
GROUP BY students.ID, students.fname, students.lname, students.stunum, students.mobile) as t2
on t1.ID = t2.ID
حالا این کد شما رو باید به چه صورت استفاده کنم؟؟؟؟
ممنون :قلب:
mortezahbh
شنبه 01 آذر 1393, 17:09 عصر
سلام
جداول اصلی چه فیلدایی دارن
این هم سه جدول من که با استفاده از کدی که در پست قبل گفتم اطلاعات خودم رو ازش بیرون میکشم
Students
ID
fname
lname
National_Num
B_Date
Old
type
address
stunum
grade
years
FieldofStudy
Semester
1
رضا
رضوی
4563453222
1370/01/01
ترمی
__________
541541552415
کارشناسی
1393
کارشناسی کامپیوتر
اول
2
علی
علوی
1234567890
1370/01/01
پودمانی
__________
123987
کارشناسی
1391
کارشناسی ارشد حسابداری
دوم
Receipts
ID
student_id
debt_id
num
type
date_Received
price
for
5
1
3
543645
فیش
1393/08/30
$3,500,000
شهریه ثابت
9
1
6
543211
چک
1393/08/30
$500,000
15% حق نظارت
Debts
ID
student_id
Tuition
title
debt_date
price
status
1
0
0
سرانه فرهنگی
1393/07/01
$350,000
0
2
0
0
بیمه
1393/07/01
$25,000
0
3
1
1
شهریه ثابت
1393/07/01
$3,500,000
پرداخت شد
4
1
0
سرانه فرهنگی
1393/07/01
$350,000
پرداخت شد
5
1
0
بیمه
1393/07/01
$25,000
پرداخت شد
6
1
0
15% حق نظارت
1393/07/01
$525,000
پرداخت نشده
14
2
1
شهریه ثابت
$5,500,000
پرداخت نشده
15
2
0
سرانه فرهنگی
$350,000
پرداخت نشده
16
2
0
بیمه
$25,000
پرداخت نشده
17
2
0
15% حق نظارت
$825,000
پرداخت نشده
mortezahbh
دوشنبه 03 آذر 1393, 18:25 عصر
دوستان ؟
من هنوز مشکلم حل نشده لطفا راهنمایی کنید :ناراحت:
با تشکر
ham3d1988
سه شنبه 04 آذر 1393, 07:31 صبح
سلام
select
a.Id
,a.Name
,a.Bedehi
,a.Pardakhti
,(a.Bedehi-a.Pardakhti) Mande
,case when (a.Bedehi>a.Pardakhti) then 'بدهکار' else 'بستانکار' end StdStatus
from
(SELECT t1.ID, t1.fname, t1.lname, t1.stunum, t1.mobile, Bedehi, Pardakhti
FROM (SELECT students.ID, students.fname, students.lname, students.stunum, students.mobile, SUM(Debts.price) as Bedehi
FROM students LEFT JOIN Debts on students.ID = Debts.student_id
GROUP BY students.ID, students.fname, students.lname, students.stunum, students.mobile) as t1
LEFT JOIN
(SELECT students.ID, students.fname, students.lname, students.stunum, students.mobile, SUM(Receipts.price) as Pardakhti
FROM students LEFT JOIN Receipts on students.ID = Receipts.student_id
GROUP BY students.ID, students.fname, students.lname, students.stunum, students.mobile) as t2
on t1.ID = t2.ID
)a
mortezahbh
سه شنبه 04 آذر 1393, 18:43 عصر
سلام
select
a.Id
,a.Name
,a.Bedehi
,a.Pardakhti
,(a.Bedehi-a.Pardakhti) Mande
,case when (a.Bedehi>a.Pardakhti) then 'بدهکار' else 'بستانکار' end StdStatus
from
(SELECT t1.ID, t1.fname, t1.lname, t1.stunum, t1.mobile, Bedehi, Pardakhti
FROM (SELECT students.ID, students.fname, students.lname, students.stunum, students.mobile, SUM(Debts.price) as Bedehi
FROM students LEFT JOIN Debts on students.ID = Debts.student_id
GROUP BY students.ID, students.fname, students.lname, students.stunum, students.mobile) as t1
LEFT JOIN
(SELECT students.ID, students.fname, students.lname, students.stunum, students.mobile, SUM(Receipts.price) as Pardakhti
FROM students LEFT JOIN Receipts on students.ID = Receipts.student_id
GROUP BY students.ID, students.fname, students.lname, students.stunum, students.mobile) as t2
on t1.ID = t2.ID
)a
ممنون دوست من ولی این هم جواب نداد
این اخطار رو میده Unspecified error :ناراحت:
حمیدرضاصادقیان
سه شنبه 04 آذر 1393, 21:50 عصر
سلام
دوست عزیز در مورد همین مورد لطفا جستجو کنید بارها و بارها در تالار بحث شده.
به علاوه به این مورد Running total می گویند که میتوانید همین عبارت را در سایت یا درگوگل جستجو کنید و به روشهای مختلف پیاده سازیش رو ببینید.
mortezahbh
چهارشنبه 05 آذر 1393, 12:19 عصر
با تشکر از راهنمایی شما
این موارد رو هم جستجو کردم اما باز هم به نتیجه مورد نظر خودم نرسیدم
دوستان لطفا باز هم راهنمایی کنید، احتمالا با یک تغییر کوچک به نتیجه میرسم
ممنون :قلب:
mortezahbh
پنج شنبه 06 آذر 1393, 19:15 عصر
دوستان ؟
مشکلم برطرف شد با این کد
'SELECT t1.ID, t1.fname, t1.lname, t1.stunum, t1.mobile, Bedehi, Pardakhti ,(Bedehi-Pardakhti)as mande'
فقط یک سوال دیگه دارم
وقتی یک دانشجو پرداختی نداشته باشد خروجی SUM اون هیچ مقداری نمیگیرد و در نتیجه در قسمت مانده نیز هیچ خروجی ندارم
من میخوام وقتی هیچ مقداری نداشت عدد صفر رو قرار بده
برای این کار باید چیکار کنم؟؟؟
با تشکر
aslan
پنج شنبه 06 آذر 1393, 22:21 عصر
ISNULL(SUM(Debts.price),0)
IsNull(bedehi,0)
http://msdn.microsoft.com/en-us/library/ms184325.aspx
mortezahbh
جمعه 07 آذر 1393, 09:53 صبح
باتشکر فراوان
دوست عزیز کد شما رو وارد کردم بعد از اجرا این اخطار رو داد
Wrong number of arguments used with function in query expression 'ISNULL(SUM(Debts.price),0)'
توی لینکی هم که فرستادید جستجو کردم ولی نتیجه ای نگرفتم
دیتا بیس من اکسس هست مشکلی با این نداره؟؟
البته خودم یکم جستجو کردم دیدم این کد هم برای sql و هم برای access جواب میده
با تشکر :قلب:
mortezahbh
یک شنبه 09 آذر 1393, 21:35 عصر
دوستان کسی ایده ای نداره؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
aslan
یک شنبه 09 آذر 1393, 21:56 عصر
در access از ترکیب IIF و ISNULL استفاده کنید . لینک زیر را ببینید :
http://forums.asp.net/t/1035861.aspx?SQL+ISNULL+function+in+MS+Access
jeson_park
یک شنبه 09 آذر 1393, 21:59 عصر
باتشکر فراوان
دوست عزیز کد شما رو وارد کردم بعد از اجرا این اخطار رو داد
Wrong number of arguments used with function in query expression 'ISNULL(SUM(Debts.price),0)'
توی لینکی هم که فرستادید جستجو کردم ولی نتیجه ای نگرفتم
دیتا بیس من اکسس هست مشکلی با این نداره؟؟
البته خودم یکم جستجو کردم دیدم این کد هم برای sql و هم برای access جواب میده
با تشکر :قلب:
database engine شما چی هست؟؟ برای بانک اطلاعاتی اکسس از Jet Database Engine استفاده کنید اختمالاً مشکلتون حل شه
mehdi.fni
سه شنبه 18 آذر 1393, 10:45 صبح
فکر کنم اگر روی (Bedehi-Pardakhti) از دستور case استفاده کنی نتیجه را بگیری
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.