PDA

View Full Version : صفر برگرداندن مقدار یک ستون در صورت null بودن (فوری)



izadi
دوشنبه 10 دی 1386, 11:14 صبح
من یک ستون دارم که sum چند مقدار را بر می گرداند .میخوام درون stored procedure اگر مقدار اینnull, sum بود بجای ان صفر قرار دهد چی کار کنم؟

mehdia86
دوشنبه 10 دی 1386, 11:17 صبح
با سلام
یکی از این دو روش جواب می ده:

ISNULL(Sum(...),0) یا
Sum(ISNULL(...,0)) استفاده کنموفق باشید

MohammadSoft
دوشنبه 10 دی 1386, 11:18 صبح
سلام


ISNULL(SUM(FIELD),0)

izadi
دوشنبه 10 دی 1386, 11:34 صبح
کد من اینه ولی صفر بر نگرداند
(select baje_sarFCode,isnull(sum([baje_sanadM]),0) as t
from baje
where [baje_bed_bes]=0
group by baje_sarFCode

mehdia86
دوشنبه 10 دی 1386, 11:37 صبح
از روش دومی که گفتم استفاده کن
Sum(ISNULL(baje_sanadM,0)) ok

izadi
دوشنبه 10 دی 1386, 11:48 صبح
کل کد من اینه بازم جواب نمیده

select a.baje_moinCode,sarFasl.fasl_desc,a.t,b.t,b.t-a.t from

(select baje_sarFCode,baje_moinCode,sum(isnull([baje_sanadM],0)) as t
from baje
where [baje_bed_bes]=0
group by baje_sarFCode,baje_moinCode) as a full outer join


(select baje_sarFCode,baje_moinCode,sum(isnull([baje_sanadM],0)) as t
from baje
where [baje_bed_bes]=1
group by baje_sarFCode, baje_moinCode) as b

on a.baje_sarFCode=b.baje_sarFCode and a.baje_moinCode=b.baje_moinCode

,sarFasl where a.baje_sarFCode=sarFasl.fasl_code
group by a.baje_moinCode,sarFasl.fasl_desc,a.t,b.t

mehdia86
دوشنبه 10 دی 1386, 11:48 صبح
با سلام
از روش دوم استفاده کن


SUM(ISNULL(baje_sanadM,0)) ok


موفق باشید

izadi
دوشنبه 10 دی 1386, 11:54 صبح
ممنوووووووووووووووووون مشکلم حل شد

mehdia86
دوشنبه 10 دی 1386, 12:00 عصر
با سلام
بنظر میاد میخوای تراز معین بگیری یا یک مانده از گردش یک خریدار ولی به هر صورت اینجا مشکل شما دستور ISNULL نیست مشکل دستور Full Outer Join هست چون تو دو تا Query که دستور ‌ISNULL وجود داره مقدار صفر برمیگرده ولی وقتی با هم با Full Outer Join مرتبط می شن رکوردهایی که معادل ندارند نیز برگردانده می شوند یعنی در این حالتی یا a.t , و یا b.t مقدار null گرفته و طبیعتا مقدار تفاضل آنها هم Null می شود
اگر جدولی برای کدها داری (همون MoinCode و...) از اون جدول Left Outer به یکی و سپس به دیگری بزن نتیجه تعداد رکورد کمتریه و آخر سر هم با یک دستور Having اونایی که نه بدهکار دارن و نه بستانکار رو فیلتر کن

موفق باشید