21-05-17, 09:41 PM
الصفحات : 1 2
21-05-17, 10:39 PM
يوجد اختصار للجزئية المطلوبة أي بدون CAST
ولتوضيحها فهي تعادل If Then Else
If = CASE WHEN
Then = THEN
Else = ELSE
انا لم أكن أعرفها إلا الآن بفضل سؤالك ومحاولة ايجاد جوابه
حتى أنا تتعامل مع تعدد الحالات مثل
ويمكن كتابة الاستعلام بالشكل التالي ويعمل ايضا
كود :
SELECT Facture_L.Num_Vent,
Facture_L.Num_Fact_Vent,
Facture_L.ID_Prod,
Facture_L.UM,
UM.Nom_UM,
(CASE WHEN (Facture_L.UM = 1) THEN (Facture_L.Qte_V * 0.02) ELSE (Facture_L.Qte_V) END) AS Qte,
Facture_L.Prix_V
FROM Facture_L
INNER JOIN UM ON Facture_L.UM = UM.ID_UMولتوضيحها فهي تعادل If Then Else
If = CASE WHEN
Then = THEN
Else = ELSE
انا لم أكن أعرفها إلا الآن بفضل سؤالك ومحاولة ايجاد جوابه
حتى أنا تتعامل مع تعدد الحالات مثل
كود :
CASE Facture_L.UM
WHEN 1 THEN (Facture_L.Qte_V * 0.02)
WHEN 2 THEN (Facture_L.Qte_V * 0.04)
WHEN 3 THEN (Facture_L.Qte_V * 0.06)
WHEN 4 THEN (Facture_L.Qte_V * 0.08)
WHEN 5 THEN (Facture_L.Qte_V * 0.10)
ELSE (Facture_L.Qte_V)
END AS Qteويمكن كتابة الاستعلام بالشكل التالي ويعمل ايضا
كود :
SELECT Facture_L.Num_Vent,
Facture_L.Num_Fact_Vent,
Facture_L.ID_Prod,
Facture_L.UM,
UM.Nom_UM,
(CASE (Facture_L.UM) WHEN (1) THEN (Facture_L.Qte_V * 0.02) ELSE (Facture_L.Qte_V) END) AS Qte,
Facture_L.Prix_V
FROM Facture_L
INNER JOIN UM ON Facture_L.UM = UM.ID_UM21-05-17, 11:01 PM
ألف شكر لك أخي الكريم تم بحمد الله وتوجيهاتك الإستعلام يعمل ولله الحمد والشكر ولكم الفضل
الإستعلام بشكله النهائي هو
[attachment=14309]
الإستعلام بشكله النهائي هو
[attachment=14309]
21-05-17, 11:14 PM
لا تحتاج إلى كتابة CAST ولا تحتاج أن تذكر WHEN 1 أو WHEN 2 لأنك ستضرب في 1 وكأن شيئا لم يكن
اكتفي بالحالات التي ستعطي نتيجة مختلفة عند ضربها
والتي حسب الاستعلام الأخير لك تحتاج عملية فقط عندما يكون الرقم 3 أو 4 فقط
لاحظ لم أكتب CAST لأنك لا تحتاجها
اكتفي بالحالات التي ستعطي نتيجة مختلفة عند ضربها
والتي حسب الاستعلام الأخير لك تحتاج عملية فقط عندما يكون الرقم 3 أو 4 فقط
كود :
(CASE (Facture_L.UM) WHEN (3) THEN (Facture_L.Qte_V * 0.01) WHEN (4) THEN (Facture_L.Qte_V * 0.02) ELSE (Facture_L.Qte_V) END) AS Qte,الصفحات : 1 2