الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استفسار : كيف يمكن صناعة حقل وهمي لناتج عملية حسابية

بدأه visual6.0 في 22 أبريل 2013 · 4 رد · 676 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

 

قمت بعمل جملة SQL هي عبارة استعلام مرتبط بأكثر من جدول وفيه حقل يحسب قيمة المدفوعات لكل فاتورة ، بعض الفواتير لم تسدد ولذلك ستكون قيمة المدفوعات Null وعوضت عن قيمة Null بالصفر عن طريق Case When وسميت الحقل sTotal ، وعندما أردت استخدام sTotal في نفس الجملة رفض الأمر وقال بأن اسم الحقل غير موجود في الجدول !!

 

فكيف أقوم بالأمر هل هو باستخدم When Case مرة أخرى لحساب المبلغ المتبقي ، أم أكتفي بـ sTotal وتوجد طريقة لاستخدامه أخرى ؟

تم تعديل هذه المشاركة بواسطة visual6.0 في 22 أبريل 2013 في 20:43

#2

هو الموظوع انا حليته كما سبق ذكره ولكن إذا كان هناك طريقة مختصرة كان أفضل

#3

أخي الفاضل

لا يمكن استخدام حقل Alias في عملية حسابية وأقصد بــ Alias هو حقل sTotal الناتج عن عملية الجمع أو القسمة أو حتي الضرب وعندما تريد استخدام sTotal لا يتم استخدامة منفردا لانه حقل في الواقع غير موجود ولحل هذه المسألة ان تستخدم بدلا منه الجمله نفسها مرة اخري

 

مثال :-

في هذا المثال قمنا بجمع المرتب + المكافأه = TotalSalary و حقل TotalSalary حقل Alias أي وهمي ولا يمكن استخدامه هكذا صراحة لذلك لاحظ معي

لقد استخدمت الجملة بالكامل مرة أخري ثم جمعت عليها المدفوع وهو حقل Paid وسميته بــ Alias جديد واسمة GrandTotal وبهذه النتيجة استطعنا ان نستخدم الحقل مرة أخري

 

select (Salary + COALESCE(bouns,0)) as TotalSalary,(Salary + COALESCE(bouns,0)) + Paid as GrandTotal
From employee

أتمني ان اكون قد افدتك

1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#4

شكراً أخي لردك ، وأنا استخدمت الطريقة نفسها كالتالي رغم أنها طويلة

 

"SELECT CARSBUY.ID , CARSBUY.Code_Process , COMPANY.sName , CARS.sName, CARSBUY.Model , CARSBUY.Sale_Mony , Case When Sum(SALES.Mony) IS NULL Then 0 Else Sum(SALES.Mony) END AS sPaid , Case When Sum(SALES.Mony) IS NULL Then CARSBUY.Sale_Mony Else CARSBUY.Sale_Mony-Sum(SALES.Mony) END AS sTOTAL FROM (((CARSBUY.DBO.CARSBUY AS CARSBUY LEFT JOIN SALES.DBO.SALES AS SALES ON CARSBUY.Code_Process = SALES.Code_Process) LEFT JOIN CARSBUY.DBO.CARSBUY AS CARSBUY_1 ON CARSBUY.Code_Process = CARSBUY_1.Code_Process) LEFT JOIN CARS ON (CARSBUY_1.Car = CARS.ID) AND (CARSBUY_1.Company = CARS.ID_Company)) LEFT JOIN COMPANY ON CARS.ID_Company = COMPANY.ID GROUP BY CARSBUY.ID, COMPANY.sName, CARS.sName, CARSBUY.Code_Process , CARSBUY.Model, CARSBUY.Sale_Mony,CARSBUY.Sale_Buyer HAVING CARSBUY.Sale_Mony<>(Case When Sum(SALES.Mony) IS NULL Then 0 Else Sum(SALES.Mony) END) And CARSBUY.Sale_Buyer=" & ID, Cn, 3, 2

بالمختصر استخدمت الشرط

 

 

Case When Sum(SALES.Mony) IS NULL Then 0 Else Sum(SALES.Mony) END AS sPaid

تم تعديل هذه المشاركة بواسطة visual6.0 في 22 أبريل 2013 في 21:16

#5

رب هذا الكود

select ISNULL(Sum(SALES.Mony),0 ) AS sPaid

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 23 أبريل 2013 في 00:28

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…