PDA

View Full Version : ماکزیمم گیری از بین 4 فیلد موجود در سطر انتخاب شده



sanaz.dadkhah
سه شنبه 23 اسفند 1390, 13:48 عصر
سلام
چگونه می توان از یک رکود یا سطر انتخاب شده از بین 4 فیلد موجود در آن ماکزیمم گیری کرد؟؟
SELECT s_name, assay_unit, unit_price1, unit_price2, unit_price3, unit_price4
FROM (SELECT tbl_stuff.s_name, tbl_assay.assay_unit, tbl_price.unit_price1, tbl_price.unit_price2, tbl_price.unit_price3, tbl_price.unit_price4
FROM tbl_stuff INNER JOIN
tbl_assay ON tbl_stuff.assay_id = tbl_assay.assay_id INNER JOIN
tbl_price ON tbl_stuff.stuff_id = tbl_price.stuff_id) AS derivedtbl_1
این سلکت من است میخواهم ماکزیمم unit_price1, unit_price2, unit_price3, unit_price4 این چهار فیلد را برگردانم

یوسف زالی
سه شنبه 23 اسفند 1390, 15:54 عصر
سلام.
اگر می تونستید فیلد ها رو به فرم یونیون بنویسید که مساله حل هست.
اما برای سوال شما :

select F1, F2, F3, F4,
case
when F1 >= F2 and F1 >= F3 and F1 >= F4 then F1
when F2 >= F1 and F2 >= F3 and F2 >= F4 then F2
when F3 >= F2 and F3 >= F1 and F3 >= F4 then F3
else F4
end as Max1,
(
((F1+F2+ABS(F1-F2)) / 2) + ((F3+F4+ABS(F3-F4)) / 2) +
ABS(((F1+F2+ABS(F1-F2)) / 2) - ((F3+F4+ABS(F3-F4)) / 2))
) / 2 as Max2
from YourTBL
order by 5



راههای دیگه ای هم هستند که معمولا مبناشون همین دو روش هست.
روش اول Case و روش دوم محاسباتی هست.
در کل برای Min و Max:
Min -> (A+B-|A-B|)/2 , Max -> (A+B+|A-B|)/2
موفق باشید.