【发布时间】:2021-04-01 18:02:25
【问题描述】:
我想用一个总和来连接两个表。我想为不在表 2 中的税码显示 0。我可以使用一个连接,结果 INS1 为 150,INS2 为 0?
表 1
| TaxCode | FilingCode |
|---|---|
| INS1 | INS |
| INS2 | INS |
表 2
| TaxCode | Payment |
|---|---|
| INS1 | 50.00 |
| INS1 | 100.00 |
【问题讨论】:
标签: sql left-join inner-join right-to-left
我想用一个总和来连接两个表。我想为不在表 2 中的税码显示 0。我可以使用一个连接,结果 INS1 为 150,INS2 为 0?
表 1
| TaxCode | FilingCode |
|---|---|
| INS1 | INS |
| INS2 | INS |
表 2
| TaxCode | Payment |
|---|---|
| INS1 | 50.00 |
| INS1 | 100.00 |
【问题讨论】:
标签: sql left-join inner-join right-to-left
你只需要一个简单的左外连接,
Select t1.TaxCode, sum(coalesce(Payment,0)) Payment
from Table1 t1
left join Table2 t2 on t2.Taxcode=t1.Taxcode
group by t1.Taxcode
【讨论】:
Select t1.TaxCode,t1.FillingCode, sum(nvl(Payment,0)) as Payment
from Table1 t1
left outer join Table2 t2 on t1.Taxcode=t2.Taxcode
group by t1.Taxcode,t1.FillingCode;
【讨论】:
对于正在寻找此类解决方案的任何人,我的有效查询如下
SELECT
T.TRAN_CODE,
SUM(ISNULL(TF.PAYMENT, 0)) AS PrePayment
FROM
Tranctl AS T
LEFT OUTER JOIN (
SELECT
T.TRAN_CODE,
0 AS PAYMENT
FROM
Tranctl AS T
CROSS JOIN Tran_File AS TF
UNION ALL SELECT
TF.TRAN_CODE,
TF.PAYMENT AS PrePayment
FROM Tran_File AS TF
WHERE
TF.ID = '10175'
AND TF.TAX_YEAR = '2021'
) TF ON T.TRAN_CODE = TF.TRAN_CODE
WHERE
T.Filing_Code = 'INS'
GROUP BY
T.TRAN_CODE
【讨论】: