MySQL के लिए बहुत नया; हालांकि, मुझे कुछ त्रुटियों में परेशानी हो रही है। मैं एक संग्रहित प्रक्रिया रखने की कोशिश कर रहा हूं जो हमें उन चालानों की संख्या बताती है जिनके पास शेष राशि है।

तो अगर, greater than 0 ...और फिर उन सभी चालानों को एक शेष राशि के साथ जोड़ दें।

यदि उन इनवॉइस का बैलेंस greater than or equal to 30,000 है, तो बैलेंस वाले इनवॉइस की संख्या और उनका योग देते हुए एक मैसेज प्रदर्शित करें।

अन्यथा, if it is less than 30,000 फिर एक संदेश प्रदर्शित करें जिसमें कहा गया है कि कुल शेष राशि 30,000 से कम है।

सहायता के लिए धन्यवाद!

कृपया ध्यान दें, कि मेरे पास अब कोड है। यह मुझे SUM पर एक त्रुटि देता है। क्या मेरे चयन कथन को बेहतर बनाने का कोई तरीका है?

मेरा कोड:

DROP PROCEDURE IF EXISTS test;

DELIMITER //

CREATE PROCEDURE test()
BEGIN
    DECLARE var_balance_due_count INT;
    DECLARE var_balance_due_sum DECIMAL(9,2);

    SELECT
        (invoice_total - payment_total - credit_total) AS balance_due,
        COUNT(invoice_total - payment_total - credit_total) INTO var_balance_due_count,
        SUM(var_balance_due_count) INTO var_balance_due_sum
    FROM
        invoices
    WHERE
        invoice_total - payment_total - credit_total > 0;


    IF var_balance_due_sum >= 30000 THEN
        SELECT CONCAT('There is ', var_balance_due_count, ' invoices.', 'Together their balance due is: $',  var_balance_due_sum) AS message;
    ELSE 
        SELECT CONCAT('Total balance due is less than $30,000.') AS message;
    END IF;
END //

DELIMITER ;

CALL test();
0
Kasador 22 अप्रैल 2018, 06:10

1 उत्तर

सबसे बढ़िया उत्तर

समस्या SUM प्रति से नहीं है, जिस तरह से आप INTO का उपयोग कर रहे हैं, यह सभी चुनिंदा अभिव्यक्तियों के बाद होना चाहिए। ध्यान दें कि मुझे समझ में नहीं आता कि आप क्यों बैलेंस_ड्यू बना रहे हैं इसलिए इसे छोड़ दिया है। साथ ही मैंने आपके प्रश्न को समझने के तरीके के अनुसार var_balance_due_sum के लिए आपकी अभिव्यक्ति में सुधार किया है। तो आपकी क्वेरी होनी चाहिए:

SELECT
    COUNT(invoice_total - payment_total - credit_total),
    SUM(invoice_total - payment_total - credit_total) 
    INTO var_balance_due_count, var_balance_due_sum
2
Nick 22 अप्रैल 2018, 09:24