كيف يمكنني تغيير NULL إلى 0 عند الحصول على قيمة واحدة من دالة SQL؟



tsql sum (6)

ORACLE / PLSQL:

NVL FUNCTION

SELECT NVL(SUM(Price), 0) AS TotalPrice 
FROM Inventory
WHERE (DateAdded BETWEEN @StartDate AND @EndDate)

سيعود هذا SQL عبارة 0 إذا كان SUM(Price) بإرجاع قيمة فارغة. خلاف ذلك ، فإنه سيعود قيمة SUM(Price) .

https://src-bin.com

لدي طلب حساب لسعر جميع العناصر بين تاريخين. هذا هو البيان المختار:

SELECT SUM(Price) AS TotalPrice 
FROM Inventory
WHERE (DateAdded BETWEEN @StartDate AND @EndDate)

يمكنك افتراض أن جميع الجداول قد تم إعدادها بشكل صحيح.

إذا قمت بالاختيار بين تاريخين ولا توجد عناصر ضمن نطاق التاريخ هذا ، تقوم الدالة بإرجاع NULL كـ TotalPrice بدلاً من 0.

كيف يمكنني التأكد من أنه إذا لم يتم العثور على أية سجلات ، فسيتم إرجاع 0 بدلاً من NULL؟


Answer #1

أسهل طريقة للقيام بذلك هي فقط لإضافة صفر إلى النتيجة.

أي

$A=($row['SUM'Price']+0);
echo $A;

أتمنى أن يساعدك هذا!!


Answer #2

يمكنك استخدام

SELECT ISNULL(SUM(ISNULL(Price, 0)), 0) .

أنا متأكد 99 ٪ من أن العمل.


Answer #3

تحرير: يبدو وكأنه الجميع يضربونني لأنها هاها

وجدت الجواب.

تحدد ISNULL() ما يجب القيام به عندما يكون لديك قيمة فارغة.

في هذه الحالة ، تقوم الدالة الخاصة بي بإرجاع قيمة فارغة لذلك أحتاج إلى تحديد 0 ليتم إرجاعها بدلاً من ذلك.

SELECT ISNULL(SUM(Price), 0) AS TotalPrice 
FROM Inventory
WHERE (DateAdded 
BETWEEN @StartDate AND @EndDate)

Answer #4
SELECT COALESCE(
    (SELECT SUM(Price) AS TotalPrice 
    FROM Inventory
    WHERE (DateAdded BETWEEN @StartDate AND @EndDate))
    , 0)

إذا كان الجدول يحتوي على صفوف في الاستجابة فإنه إرجاع SUM (السعر). إذا كانت SUM هي NULL أو لا توجد صفوف فسيتم إرجاعها 0.

لا يعمل وضع COALESCE (SUM (السعر) ، 0) في MSSQL إذا تم العثور على أية صفوف.


Answer #5
SELECT ISNULL(SUM(Price), 0) AS TotalPrice 
FROM Inventory
WHERE (DateAdded BETWEEN @StartDate AND @EndDate)

الذي عليه أن يقوم بالخدعة.





sum