我在 MySQL 中有兩個表。第一個存盤名稱、客戶增值稅號、金額、日期和稱為每月的變數。另一個表存盤與另一個表相同的內容,但沒有稱為每月的變數。所以我的代碼是:
query = """SELECT sp.customer_surname, sp.amount, SUM(cp.amount), sp.monthly, sp.date_
FROM set_payment7777 sp
INNER JOIN customers_payments7777 cp ON cp.customer_VAT = sp.customer_VAT
WHERE sp.date_ <= %s AND cp.date_ <= %s
GROUP BY sp.customer_VAT"""
mycursor.execute(query,(to_date,to_date,))
for row in mycursor:
if row[3].upper() == 'Y':
final_amount = row[1] * ((to_date.year - row[4].year) * 12 (to_date.month - row[4].month)) row[1]
final_subtraction = final_amount - row[2]
file.write(f"{row[0]}\t{final_subtraction}\t")
file.write("\n")
else:
final_subtraction = row[1] - row[2]
file.write(f"{row[0]}\t{final_subtraction}\t")
file.write("\n")
它連接兩個表,獲取兩個日期之間表的所有數量,然后如果每月變數設定為“Y”(它是一個列舉),它將第一個表的數量乘以之間的月份然后將兩個日期減去另一個表的金額總和。如果變數設定為“N”,它會執行相同的操作,但不會將數量乘以日期之間的月數。我的問題是,如果我在第一個表中有多個條目,它只適用于第一個條目。例如,如果我在第一個表中有數量 30 和 150,而在第二個表中有數量 25、50、25,它將回傳 30-100 = -70。我可以選擇第一個表的金額總和,但我不想,因為那樣我就不會了'
uj5u.com熱心網友回復:
它可能最適合相關查詢而不是連接,如下所示:
"""SELECT sp.customer_surname, sp.amount,
(Select SUM(cp.amount) from customers_payments7777 cp
where cp.customer_VAT = sp.customer_VAT AND sp.date_ <= %s AND cp.date_ <= %s
GROUP BY sp.customer_VAT) amountsum,
, sp.monthly, sp.date_
FROM set_payment7777 sp
"""
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/393647.html
上一篇:陣列PDO到MYSQL
下一篇:分布式資料庫插入速度很慢
