PDA

View Full Version : فیلدهای محاسباتی



DataMaster
شنبه 18 آذر 1385, 19:16 عصر
سلام
من توی یه query می خوام از نتایج محاسبات فیلد قبلی به عنوان منبع محاسبات یه فیلد دیگه استفاده کنم مثلا میخوام زا مبلغ کل جنس 10 درصئ مالیات کم بشه و بعد از نتیجه کسر 10 درصد مالیات 10 درصد پورسانت کم کنم اما نمی تونم
لطفا دوستان راهنمایی کنن
ممنون

linux
شنبه 18 آذر 1385, 19:37 عصر
سلام
من توی یه query می خوام از نتایج محاسبات فیلد قبلی به عنوان منبع محاسبات یه فیلد دیگه استفاده کنم مثلا میخوام زا مبلغ کل جنس 10 درصئ مالیات کم بشه و بعد از نتیجه کسر 10 درصد مالیات 10 درصد پورسانت کم کنم اما نمی تونم
لطفا دوستان راهنمایی کنن
ممنون
فکر نکنم کلا نمی تونی! باید برای هر ستون فرمول بنویسی

AminSobati
شنبه 18 آذر 1385, 20:54 عصر
Computed Column برای همینه، مشکلی هست در استفادش؟

linux
یک شنبه 19 آذر 1385, 13:13 عصر
Computed Column برای همینه، مشکلی هست در استفادش؟

فکر کنم منظور این دوستمان این بود مثلا
از یک جدول یک ستون را محاسباتی می خواهیم داشته باشیم
فرض کنید می خواهید مقدار ستون 1 را در 200 ضرب کنیم و می خواهیم مقداری که در 200 ضرب شد باقیمانده اش بر 10 را هم بدست آوریم هر دو مقدار را هم می خواهیم کنار هم داشته باشیم.

select col1*200 as p,p%10 from tbl

h_baqery
یک شنبه 19 آذر 1385, 13:22 عصر
select col1*200 as p,(col1*200)%10 as p2 from tbl

odiseh
دوشنبه 20 آذر 1385, 10:14 صبح
سلام

همان طور که h_baqery گفتند باید برای ستون محاسباتی دوم باید دوباره کد نوشت . اصولا استفاده از Alias در بخش هایی مثل شرط ها (where , having) , نیز ستونهای محاسباتی
صحیح نیست. یا باید subquery نوشت یا کل عبارت رو .

saman020
دوشنبه 20 آذر 1385, 17:05 عصر
create two calculated fields in your query
in oncalcfields query you can first calc first result and use of first clac fields for second field , ...

محمد دادودنیا
سه شنبه 21 آذر 1385, 02:35 صبح
select col1*200 as p,(col1*200)%10 as p2 from tbl

این درسته ولی اگر می خوای از نتیجه یه فیلد محاسباتی استفاده کنی
به این صورت می تونی استفاده کنی



Select * ,
P%10 as p2 From (select col1*200 as p from tbl)tmp

DataMaster
شنبه 25 آذر 1385, 12:08 عصر
Computed Column برای همینه، مشکلی هست در استفادش؟

اگه میشه در این مورد توضیح بدین؟

select col1*200 as p,p%10 from tbl
دقیقا همچین کاری میخوام بکنم که همچین کاری غیر مجاز است نمی خوام دوباره تمام محاسبات رو انجام بدم چون خیلی طولانی هستن

توی یوزر فانکشنها چطور؟ این کار رو چطوری میتونم انجام بدم

AminSobati
شنبه 25 آذر 1385, 13:36 عصر
create table t1(
c1 int,
c2 as c1 * 2)

select c2, c2*2 from t1

AminSobati
شنبه 25 آذر 1385, 13:37 عصر
در ضمن این امکان وجود داره که روی فیلدهای Computed ایندکس بسازید و در SQL Server 2005 میتونین این ستونها رو به صورت فیزیکی Persist کنین تا سرعت Query بسیار بهتر بشه