Reputation: 47
First query for InvoiceOne table to group_by category and get sum of totalExGst:
sortCategory = db.session.query(
InvoiceOne.category, db.func.sum(
InvoiceOne.totalExGst).label('Total')
).filter(and_(InvoiceOne.storeNumber == '98376', InvoiceOne.weekEndDate == '2020-03-22')).group_by(InvoiceOne.category)
Second query does same thing with BankData table:
sortCategory = db.session.query(
BankData.category, db.func.sum(
BankData.debit).label('Total_BankData')
).filter(and_(BankData.storeNumber == '98376', BankData.weekEndDate == '2020-03-22')).group_by(BankData.category)
I would like to join this query together so instead of getting Total
and Total_BankData
I can get only one column for total.
Upvotes: 0
Views: 102
Reputation: 134
I suggest you go with subqueries :
sortCategory1 = db.session.query(
InvoiceOne.category,
db.func.sum(InvoiceOne.totalExGst).label('Total')
).filter(
and_(
InvoiceOne.storeNumber == '98376',
InvoiceOne.weekEndDate == '2020-03-22')
).group_by(InvoiceOne.category).subquery()
sortCategory2 = db.session.query(
BankData.category,
db.func.sum(BankData.debit).label('Total_BankData')
).filter(
and_(
BankData.storeNumber == '98376',
BankData.weekEndDate == '2020-03-22')
).group_by(BankData.category).subquery()
sortCategoryTotal = db.session.query(
sortCategory1.c.category,
sortCategory1.c.Total + sortCategory2.c.Total_BankData
).join(sortCategory2, sortCategory1.c.category == sortCategory2.c.category)
Upvotes: 1