PDA

View Full Version : یک سلکتی از حاصجمع



sm_1366
چهارشنبه 04 دی 1392, 11:06 صبح
سلام به همگی
من جدولی دارم که فیلدهاش ایناست ..


کد مشتری (id)/ بدهکار (bede)/ بستانکار (best)

و من این جدولو پر کردم
مثلا
مشتری با کد 1101 دوبار بستانکار شده (1 بار 2000 ریال بار دوم 4000 ریال) و بدهکاریش 0 بوده
و دو سه بار هم بدهکار شده بستانکاریش 0 بوده (1 بار 5000 ریال بار دوم 1000 ریال بار سوم 1000 ریال)

جدول به صورت زیر پر شده


کد مشتری بدهکار بستانکار
1101 /0 / 2000
1101/ 0 / 4000
1101/ 5000 / 0
1101 / 1000 / 0
1101 / 1000 / 0



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

کد مشتری /بدهکار/ بستانکار
1101/ 0 / 6000
1101/ 7000/ 0

راهنماییم میکنید لطفا؟؟؟


select id, sum(bede) from tbl group by id, ,bede

جواب نداد



select id, sum(bede),sum(best) from tbl group by id, ,bede, best

جواب نداد



select id, sum(bede),sum(best) from tbl group by id, ,bede

جواب نداد

hamid_hr
چهارشنبه 04 دی 1392, 11:27 صبح
select id, sum(bede) from tbl group by id
select id, sum(best) from tbl group by id

sm_1366
چهارشنبه 04 دی 1392, 11:36 صبح
select id, sum(bede) from tbl
group by idselect id, sum(best) from tbl group by id

خطا داد از سلکت دوم خطا گرفت استاد

hamid_hr
چهارشنبه 04 دی 1392, 11:38 صبح
ويرايش شد..................

sm_1366
چهارشنبه 04 دی 1392, 11:40 صبح
:گریه:خب من تو برنامه کدوم سلکتو بریزم تو دیتا گرید ویو این که دو تا سلکت جداگانه شد که ...

hamid_hr
چهارشنبه 04 دی 1392, 11:45 صبح
select id, sum(bede) ,sum(best) from tbl group by id
خب اينطوري بنويس ستون اول كد مشتري
دوم بدهي
سوم بستانكار

sm_1366
چهارشنبه 04 دی 1392, 11:47 صبح
نوشتم خطا میده میگه باید هر چی تو سلکت آوردی باید تو group by هم بیاری

hamid_hr
چهارشنبه 04 دی 1392, 11:57 صبح
دستوري كه اجرا كردي چي هست؟

sm_1366
چهارشنبه 04 دی 1392, 11:59 صبح
دستوري كه اجرا كردي چي هست؟


select id, sum(bede) ,sum(best) from tbl group by id

hamid_hr
چهارشنبه 04 دی 1392, 12:03 عصر
تو سيستم من خطا نميده
اگه دقيقا همين دستوره نبايد خطا بده
متن خطاا رو بزار

sm_1366
چهارشنبه 04 دی 1392, 12:04 عصر
به این شکل تغییرش دادم خطا نداد اون خروجی که میخواستمو نداد

select id, sum(bede) ,sum(best) from tbl group by id


خروجیش این بود

کد مشتری /بدهکار/ بستانکار
1101 / 7000 /6000


نه این :
کد مشتری /بدهکار/ بستانکار
1101/ 0 / 6000
1101/ 7000/ 0

sm_1366
چهارشنبه 04 دی 1392, 12:05 عصر
من میخوام اینو بده

کد مشتری /بدهکار/ بستانکار
1101/ 0 / 6000
1101/ 7000/ 0

شما عین همین جدولو تو سیستمت بساز ببین جواب میگیری

sm_1366
چهارشنبه 04 دی 1392, 12:06 عصر
داده ها رو مثل اولین تاپیک بذار ببین تو سلکت شما چی جمع میزنه

sm_1366
چهارشنبه 04 دی 1392, 12:17 عصر
شد برادر تونستی کاری کنی؟

hamid_hr
چهارشنبه 04 دی 1392, 12:19 عصر
select id, sum(bede) ,0 from tbl
where best = 0
group by id
union
select id,0 ,sum(best) from tbl
where bede = 0
group by id

sm_1366
چهارشنبه 04 دی 1392, 12:28 عصر
مرسی ممنون ..
حالا اگه بخوام این کارو برای مشتریای خاصی انجام بده فقط تو where باید شرط رو اضافه کنم



select id, sum(bede) ,0 from tbl
where best = 0 and id=+id

group by id
union
select id,0 ,sum(best) from tbl
where bede = 0 and id= +id

group by id





درست نوشتم؟

hamid_hr
چهارشنبه 04 دی 1392, 12:33 عصر
بله درسته ................

sm_1366
چهارشنبه 04 دی 1392, 12:35 عصر
مرسی برادر ...
فعلا sql ام قاط زد اوکی گرفتم بهت میگم خیلی لطف کردی