PDA

View Full Version : دستور جمع فیلد ها با شرایط خاص



elena2007
دوشنبه 21 آذر 1390, 17:07 عصر
سلام دوستان . لطفا یکی کمکم کنه . برام حیاتی هستش ...
یه جدول دارم با فیلد های err1 , err2 , err3 , err4, err5 , glen
توی فیلد های err1 تا err5 اعداد صفر تا 43 قرار دارند . من باید بگم اون فیلد هایی که توش یه عدد خاص ، مثلا 5 هستش رو برام پیدا کنه و طولش که همون glen هستش رو جمع کنه و برگردونه .
فرقی نمی کنه که عدد 5 تو کدوم یک از فیلد های err1 تا err5 قرار داره . مهم اینه که باشه و هر کجا پیدا شد طولشون جمع بزنه و برگردونه . با این تفاوت که اگه عدد 5 مثلا در err1 هستش و توی err2 عدد مثلا 23 هستش و طولشو 120 نشون می ده ، عدد 120 تقسیم به 2 بکنه و جمع بزنه نه خود 120 . چون 120 مر بوط به 2 تا فیلد بوده نه فقط یکی . به همین ترتیب تا آخر . یعنی اگه 3 تا فیلد پر دارم که یکیشونم حتما 5 هستش ، طولی که برا اون رکورد زده ، تقسیم به 3 کنه و بعد sum کنه .
در آخر فقط یه عدد برمی گردونه که نشون دهنده جمع طول های تمام اعداد 5 موجود تو جدولم هستش . 79095

لطفا یکی کمکم کنه . واقعا موندم . کارم خیلی ضروریه و وقت ندارم . ممنون

MOJTABAATEFEH
دوشنبه 21 آذر 1390, 21:19 عصر
دوست عزیز طبق نوشتهی شما خالی ها برابر صفر در نظر گرفته شده است



CREATE PROCEDURE ERR
@Param1 INT
AS
BEGIN
Declare @Counter Bigint, @Sum_GLen Bigint
set @Counter = 0
set @Sum_GLen = 0
if err1 > 0 and err1 = @Counter
set @Counter = @Counter + 1

if err2 > 0 and err2 = @Counter
set @Counter = @Counter + 1

if err3 > 0 and err3 = @Counter
set @Counter = @Counter + 1

if err4 > 0 and err4 = @Counter
set @Counter = @Counter + 1

if err5 > 0 and err5 = @Counter
set @Counter = @Counter + 1

set @Sum_GLen = @Sum_GLen + (glen / @Counter)

END

elena2007
سه شنبه 22 آذر 1390, 09:17 صبح
ممنون از جوابتون . ولی من دسترسی به قسمت خود گزارش ندارم و گزارشم رو باید تو فست ریپورت و قسمت دیزاین بنویسم . حالا این کد هایی که نوشتین رو چطور تبدیل کنم ؟ گزارشم رو به زبان pascal script می نویسم

MOJTABAATEFEH
شنبه 26 آذر 1390, 21:23 عصر
منظورتون چیه دسترسی به قسمت گزارش ندارید و باید در فست بنویسید!!!!!!!!!!!!!!!!!!؟؟؟؟؟؟؟