【发布时间】:2021-03-22 06:34:50
【问题描述】:
我有两个这样连接的表:
SELECT count(DISTINCT T1.ContractNumber) AS nr_of_contracts,
count(T3.DateofInstallmentPayment) AS nr_of_paid_installents,
count(T3.DateofDueInstallment) AS nr_of_installments,
sum(T1.DisbursementAmount) AS disbursed_amount
FROM q.T1
LEFT JOIN q.T3
ON T1.ContractNumber=T3.ContractNumber
WHERE DateOfDisbursement BETWEEN '2019-12-01' AND '2019-12-31'
AND T3.DateofDueInstallment < GETDATE()
其中 T1 表包含有关客户的数据(按合同编号),T3 包含有关其付款计划的数据(按每期付款)。
我想要的是从表 T1(按合同编号汇总)中支付合同的金额(支付金额),而不是按每期付款。当我尝试只选择 sum(T1.Disbursement amount) 时,我收到了 sum,但所有分期付款都不正确。
T1:
| Contract Number | DisbursementDate | Disbursement Amount |
|---|---|---|
| 1 | 2019-12-01 | 1000 |
| 2 | 2019-12-01 | 2000 |
| 3 | 2019-12-01 | 3000 |
T3:
| Contract Number | DateofDueInstallment | DateofInstallmentPayment |
|---|---|---|
| 1 | 2020-01-01 | 2020-01-01 |
| 1 | 2020-02-01 | 2020-02-06 |
| 1 | 2020-03-01 | 2020-04-01 |
在为 Contract Number = 1 加入两个表后,我得到的是 sum(DisbursementAmount) = 3000。
| Contract Number | sum(DisbursementAmount) |
|---|---|
| 1 | 3000 |
在为 Contract Number = 1 加入两个表后,我想要的是 sum(DisbursementAmount) = 1000。
| Contract Number | sum(DisbursementAmount) |
|---|---|
| 1 | 1000 |
【问题讨论】:
-
请发布表格架构、示例数据和所需结果,最好使用dbfiddle.uk等在线工具
-
T1: ContractNumber, Product, Nr of Installment, DisbursementAmount T3: ContractNumber, Number_of_installment, Installment_amount_due, Installment_amount_payed 我想在每一行中查看连接结构(T1 和 T3)中 Installments_amount_payed 的总和相同的金额(所有分期付款的总和,按合同编号而不是按分期付款的数量分组)。
-
我编辑了问题并简化了它。
-
采样日期 + 预期结果,即 minimal reproducible example 真的很有帮助。
-
好的,我希望这个问题现在是可见的。可以吗?
标签: sql-server tsql join aggregation