我有3个SQL表。 python
,StudentTable
和FeeAssociationTable
。
InvoiceTable
的主键为StudentTable
,AdmissionNumber
的主键为FeeAssociationTable
,FeeAssociationID
的主键为InvioceTable
。
InvoiceID
收取FeeAssociationTable
并为其分配费用,然后在存放费用时AdmissionNumber
收取InvoiceTable
并计算其所有费用,并从已付和插入中减去在会费中。
问题是;相同的AdmissionNumber
在InvoiceTable中可以有多行,“如何选择和汇总每个AdmissionNumber的所有最近的应付款(不重复)。”
这是一些数据;
AdmissionNumber
期望: 我想要每个学生的最新会费,而不要添加上一个。
例如:-
37 1 3000 January-2018 3000 0 2018-08-17
38 2 3000 January-2018 3000 0 2018-08-17
39 3 3000 January-2018 3000 0 2018-08-17
40 4 3000 January-2018 3000 0 2018-08-17
41 5 3000 January-2018 3000 0 2018-08-17
42 6 3000 January-2018 3000 0 2018-08-17
43 7 3000 January-2018 3000 0 2018-08-17
44 8 3000 January-2018 3000 0 2018-08-17
45 9 3000 January-2018 3000 0 2018-08-17
46 10 3000 January-2018 3000 0 2018-08-17
47 1 3200 June-2018 2500 700 2018-08-17
48 2 3200 June-2018 2500 700 2018-08-17
49 3 3200 June-2018 2500 700 2018-08-17
50 4 3200 June-2018 2500 700 2018-08-17
51 5 3200 June-2018 2500 700 2018-08-17
52 6 3200 June-2018 2500 700 2018-08-17
53 7 3200 June-2018 2500 700 2018-08-17
54 8 3200 June-2018 2500 700 2018-08-17
55 9 3200 June-2018 2500 700 2018-08-17
56 10 3200 June-2018 2500 700 2018-08-17
57 10 3700 July-2018 2500 1200 2018-08-17
58 9 3700 July-2018 2400 1300 2018-08-17
59 8 3700 July-2018 200 3500 2018-08-17
60 7 3700 July-2018 2000 1700 2018-08-17
61 1 3700 July-2018 1500 2200 2018-08-17
62 2 3700 July-2018 3100 600 2018-08-17
InvoiceTable中有InvoiceId AdmissionNumber TotalFee Month Paid Dues Date
37 1 3000 January-2018 3000 0 2018-08-17
47 1 3200 June-2018 2500 700 2018-08-17
61 1 3700 July-2018 1500 2200 2018-08-17
的3个条目。在第一个中没有应付款,但是在第二个条目中有700的应付款,在第三个条目中,AdmissionNumber 1
上的2200的应付款。
我要做的是选择最后一个,可以通过下面的代码完成:
AdmissionNumber 1
这是我要列出的每个学生最近的应付账单。
预先感谢
答案 0 :(得分:1)
根据您的跟进信息,我相信以下内容将为您提供所需的信息:
SELECT invoiceId, AdmissionNumber, Dues
FROM InvoiceTable AS IT
WHERE IT.invoiceId IN (SELECT MAX(invoiceId)
FROM InvoiceTable
GROUP BY AdmissionNumber)
ORDER BY AdmissionNumber ASC
他们在您的示例中尝试的查询很接近,只需要对其进行调整即可适用于整个表,而不是单个AdmissionNumber
。
以下是此工作的演示:SQL Fiddle