منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
عمل شرط داخل استعلام - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم أسئلة واستفسارات الأعضاء - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=94)
+--- قسم : Microsoft SQL Server (http://vb4arb.com/vb/forumdisplay.php?fid=171)
+--- الموضوع : عمل شرط داخل استعلام (/showthread.php?tid=20485)

الصفحات: 1 2


عمل شرط داخل استعلام - djelloul - 21-05-17

السلام عليكم ورحمة الله تعالى وبركاته
الأساتذة الكرام رجاءا عندي حقل أريد عمل استعلام بشرط تحقق قيمة معينة فيه يقوم بعملية حسابية داخل نفس الإستعلام  كيف يتم ذلك
قاعدة البيانات sql server
ألف شكر لكم مسبقا


RE: عمل شرط داخل استعلام - alma2 - 21-05-17

وضح أكثر ما تقصد "يقوم بعملية حسابية داخل نفس الإستعلام" وضع مثال


RE: عمل شرط داخل استعلام - djelloul - 21-05-17

ألف شكر مسبقا
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 كما هي
أرجوا أن أكون قد وضحت الفكرة
ألف شكر مرة ثانية


RE: عمل شرط داخل استعلام - alma2 - 21-05-17

انت عاملها بس انك عكستها
كود :
IIF(Facture_L.UM = 1, Facture_L.Qte_V * 0.02 , Facture_L.Qte_V) AS Qte



RE: عمل شرط داخل استعلام - djelloul - 21-05-17

تطلع لي رسالة الخطأ التالية :
Error in list of function arguments: '=' not recognized.
Unable to parse query text.


RE: عمل شرط داخل استعلام - alma2 - 21-05-17

يبدو ان نوع العمود Facture_L.UM ليس رقمي
ضعه داخل رمز '
كود :
IIF(Facture_L.UM = '1', Facture_L.Qte_V * 0.02 , Facture_L.Qte_V) AS Qte



RE: عمل شرط داخل استعلام - djelloul - 21-05-17

نفس الرسالة
هل يمكن استعمال if ; then


RE: عمل شرط داخل استعلام - alma2 - 21-05-17

وجدت لك الطريقة عذرا لعدم خبرتي في 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



RE: عمل شرط داخل استعلام - djelloul - 21-05-17

طيب وهذا الإستعلام ؟
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]


RE: عمل شرط داخل استعلام - alma2 - 21-05-17

جرب هذا الاستعلام بعد التعديل
كود :
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