السلام عليكم ورحمة الله تعالى وبركاته
الأساتذة الكرام رجاءا عندي حقل أريد عمل استعلام بشرط تحقق قيمة معينة فيه يقوم بعملية حسابية داخل نفس الإستعلام كيف يتم ذلك
قاعدة البيانات sql server
ألف شكر لكم مسبقا
وضح أكثر ما تقصد "يقوم بعملية حسابية داخل نفس الإستعلام" وضع مثال
ألف شكر مسبقا
SELECT dbo.Facture_L.Num_Vent, dbo.Facture_L.Num_Fact_Vent, dbo.Facture_L.ID_Prod, dbo.Facture_L.UM, dbo.UM.Nom_UM,iif(dbo.Facture_L.UM = 1, dbo.Facture_L.Qte_V, dbo.Facture_L.Qte_V * 0.02) as Qte, dbo.Facture_L.Prix_V
FROM dbo.Facture_L INNER JOIN
dbo.UM ON dbo.Facture_L.UM = dbo.UM.ID_UM
لو هذا الحلق dbo.Facture_L.UM قيمته تساوي 1 نضرب قيمة الحقل dbo.Facture_L.Qte_V في 0.02 أما لو كانت غير ذلك تبقى قيمة الحقل dbo.Facture_L.Qte_V كما هي
أرجوا أن أكون قد وضحت الفكرة
ألف شكر مرة ثانية
تطلع لي رسالة الخطأ التالية :
Error in list of function arguments: '=' not recognized.
Unable to parse query text.
يبدو ان نوع العمود Facture_L.UM ليس رقمي
ضعه داخل رمز '
كود :
IIF(Facture_L.UM = '1', Facture_L.Qte_V * 0.02 , Facture_L.Qte_V) AS Qte
نفس الرسالة
هل يمكن استعمال if ; then
وجدت لك الطريقة عذرا لعدم خبرتي في sql server
كود :
CAST(CASE WHEN (Facture_L.UM = 1) THEN (Facture_L.Qte_V * 0.02) ELSE (Facture_L.Qte_V) END AS FLOAT) AS Qte
طيب وهذا الإستعلام ؟
declare @UM Int
set @UM Int = (SELECT dbo.Facture_L.UM FROM dbo.Facture_L)
if @Um = '1' then SELECT dbo.Facture_L.Num_Vent, dbo.Facture_L.Num_Fact_Vent, dbo.Facture_L.ID_Prod, dbo.Facture_L.UM, dbo.UM.Nom_UM, Facture_L.Qte_V * 0.02 AS Qte
FROM dbo.Facture_L INNER JOIN
dbo.UM ON dbo.Facture_L.UM = dbo.UM.ID_UM
بتطلع لي هذه الرسالة :
[
attachment=14306]
جرب هذا الاستعلام بعد التعديل
كود :
SELECT Facture_L.Num_Vent,
Facture_L.Num_Fact_Vent,
Facture_L.ID_Prod,
Facture_L.UM,
UM.Nom_UM,
CAST(CASE WHEN (Facture_L.UM = 1) THEN (Facture_L.Qte_V * 0.02) ELSE (Facture_L.Qte_V) END AS FLOAT) AS Qte,
Facture_L.Prix_V
FROM Facture_L
INNER JOIN UM ON Facture_L.UM = UM.ID_UM