PDA

View Full Version : چه طوری میشه این ویو رو نوشت



j.farazani
یک شنبه 01 مهر 1386, 23:00 عصر
با سلام خدمت دوستان عزیزم
من یک ویو دارم که سه تا از فیلدهای اون idو debit و credit هستن حالا میخوام مانده تجمیعی debit و credit رو در دو فیلد جدا نشون بده و یک فیلد هم حاصل اختلاف دو فیلد جدید رو نشون بده (البته مانده در خط)
زحمت میکشید

odiseh
دوشنبه 02 مهر 1386, 08:12 صبح
select sum(debit) as sum_debit, sum(credit) as sum_credit, sum(debit) - sum(credit) As diff
from Table1

hamed_bostan
دوشنبه 02 مهر 1386, 15:37 عصر
می تونی از قسمت formula در لحظه ساخت جدول در sql server استفاده کنی و نتیجه محاسبات رو همیشه داشته باشی مگه اینکه بخوای dynamic محاسبه اش کنی

j.farazani
دوشنبه 02 مهر 1386, 20:46 عصر
با سلام
odise جان ممنون . اما این چیزی نیست که من میخوام .

می تونی از قسمت formula در لحظه ساخت جدول در sql server استفاده کنی و نتیجه محاسبات رو همیشه داشته باشی مگه اینکه بخوای dynamic محاسبه اش کنی
hamed جان دست شما درد نکنه . خیلی وقته دنبال این هستم یه جوری از این قسمت استفاده کنم و فرمول هایی مثل sum و count و ... در اون استفاده کنم میشه یه مثالی در این زمینه بزنید

دوستان لطفا تصویر زمینه رو نگاه کنید . مطمئن هستم که راه حلی داره . بدجوری گیر کردم :گریه::گریه:

یک دنیا لطف میکنید

AminSobati
دوشنبه 02 مهر 1386, 23:24 عصر
من قبلا اسکریپتی نوشته بودم که عمل مشابه رو انجام میداد، شاید دقیقا هدف شما این نباشه، اما تکنیکش رو میتونین برای خودتون Customize کنین:

در اینجا یک جدول میسازیم و با اعداد Random مقدار دهی میکنیم:



create table tx(c1 int identity primary key, c2 int)

declare @counter int
set @counter=0
while @counter<>30000
begin
insert tx(c2) select rand()*10
set @counter=@counter+1
end

select * from tx


و در اینجا محاسبه رو انجام میدیم:



declare @t1 table (c1 int primary key,c2 int,acc int)

declare @acc int
set @acc=0
declare @start int
select @start=min(c1) from tx

while 1=1
begin
insert @t1 select c1,c2,c2+@acc from tx where c1=@start
select @start=min(c1) from tx where c1>@start
if @start is null break
select @acc=acc from @t1 where c1=(select max(c1) from @t1)
end

select * from @t1

j.farazani
پنج شنبه 05 مهر 1386, 14:59 عصر
با سلام خدمت استاد sobati
در ابتدا عذر خواهی میکنم از اینکه چند روزی نتوستم به سایت بیام
از راهنمایی شما سپاسگذارم خیلی قشنگ بود
اما مشکل اینجاست که هر دفعه بخواهیم مانده تجمیعی رو داشته باشیم باید کد ساختن اون ویو مربوطه اجرا بشه که اساسا user حاضر نیست این همه وقت هر بار برای ساختن این ویو صرف کنه . راه سریعتری وجود نداره ؟

لطف میکنید

hamed_bostan
پنج شنبه 05 مهر 1386, 16:50 عصر
خیلی وقته دنبال این هستم یه جوری از این قسمت استفاده کنم و فرمول هایی مثل sum و count و ... در اون استفاده کنم میشه یه مثالی در این زمینه بزنید

ببین دوست من این formula فقط سطری عمل میکنه نه ستونی و به ازای هر رکورد و تنها برای ستون های هر رکورد امجزا اعمال میشه پیس اگه قصد جمع گیری یا .. رو روی رکورد هات به صورت ستونی داری این روش رو بی خیال شو .ولی اگه قصدت همون ستری عمل کردنه شما خیلی راحت میتونی توی قسمت formula ستونی که میخوای نتیجه توش قراربگیره فرملت رو که متغیر هاش اسم ستون هات هست رو بنویسی به همین راحتی

j.farazani
شنبه 07 مهر 1386, 15:16 عصر
سلام
hamed جان خیلی لطف کردی

object
شنبه 07 مهر 1386, 21:07 عصر
فکر میکنم بهترین راحش این باشه که محاسباتت رو سمت کلاینت (با application خودت) انجام بدی اینجوری میتونه خیلی سریعتر باشه و صد البته تو دست تر در غیر اینصورت راه حل مناسبش به نظر من استفاده از کرسر هستش که باز هم ممکنه کند به نظر بیاد

j.farazani
پنج شنبه 12 مهر 1386, 00:48 صبح
سلام
دوست عزیزم object خیلی لطف کردی