在sequelize中从两个不同的join(includes)获取“sum of”

cunj1qz1  于 2021-06-17  发布在  Mysql
关注(0)|答案(0)|浏览(246)

我想从sequilize中的两个不同表中得到列的和。
我想准确点 totalpaid , refunded & refundable 字段,因分组而异,我无法解决它。

//Some pre-desined variables
var totalPaidQueryStr = '(CASE WHEN (SUM(inv_payment_record_invoices.payment)) IS NULL THEN 0 ELSE (SUM(inv_payment_record_invoices.payment)) END)';
var totalPaidQuery = [Sequelize.literal(totalPaidQueryStr), 'totalpaid']; //Get the total paid amount till date;
var refundedQueryStr = '(CASE WHEN (SUM(inv_payment_record_refunds.amount)) IS NULL THEN 0 ELSE (SUM(inv_payment_record_refunds.amount)) END)';
var refundedQuery = [Sequelize.literal(refundedQueryStr), 'refunded']; //Get the total paid amount till date
var refundableQueryStr = `(inv_payment_records.amount - (${totalPaidQueryStr} + ${refundedQueryStr}))`;
var refundableQuery = [Sequelize.literal(refundableQueryStr), 'refundable']; //Get the total due amount

return InvPaymentRecords.findOne({
    attributes: [
        'customer_id',
        'amount',
        'company_currency_id',
        'exchange_rate',
        totalPaidQuery, //Want to accurate sum
        refundedQuery, //Want to accurate sum
        refundableQuery
    ],
    where: {
        'id': payment_record_id,
        'company_id': company_id
    },
    include: [
        {
            model: InvPaymentRecordInvoices,
            require: false,
            attributes: [],
        },
        {
            model: InvPaymentRecordRefund,
            require: false,
            attributes: [],
        }
    ],
    group: [
        //'inv_payment_records.id',
        //'inv_payment_record_invoices.id',
        //'inv_payment_record_refunds.id'
    ]
}).then(iprdata => {
    return sequelize.Promise.resolve(iprdata);
}).catch(error => {
    return sequelize.Promise.reject(error);
})

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题