连接具有相同标题但在不同表中的两列
Posted
技术标签:
【中文标题】连接具有相同标题但在不同表中的两列【英文标题】:join two columns with same title but in different table 【发布时间】:2014-08-12 11:40:30 【问题描述】:我有一张表pur
,其值为
CUST_ID AMOUNT
1 100
3 50
1 200
1 500
3 20
表cus
的值为:
CUST_ID
1
2
3
我该如何展示这个:
CUST_ID Total_AMOUNT
2 0
3 70
1 800
简单地说,我如何显示cus
表中的 2 列?
【问题讨论】:
RTM:join
syntax 和 aggregate functions
【参考方案1】:
您可以使用LEFT JOIN
,然后通过对具有相同CUST_ID
的行进行分组来获得AMOUNT
中的SUM
:
SELECT t2.CUST_ID
, COALESCE(SUM(t1.AMOUNT), 0) AS TOTAL
FROM cus t2 LEFT JOIN pur t1 ON t1.CUST_ID = t2.CUST_ID
GROUP BY t2.CUST_ID
ORDER BY TOTAL
SQLFiddle
【讨论】:
非常感谢!它有效,但无法弄清楚为什么当我已经将数量定义为 NOT NULL 时,反对 2 的值显示为 NULL @user3764208 :当您使用LEFT JOIN
时,右侧 (CUST_ID
= 2
) 表中不存在的值将替换为 NULL
。然后您尝试SUM(NULL)
,它以AMOUNT
列中的NULL
值结尾。正如您在我的回答中看到的那样,您可以轻松检查并替换为0
,使用COALESCE
、CASE
、IF
等。以上是关于连接具有相同标题但在不同表中的两列的主要内容,如果未能解决你的问题,请参考以下文章
如何基于每个数据框中具有不同名称的两列将两个数据框与 dplyr 连接起来? [复制]
如何在 Visual Studio 2019 的 Datagrid 视图中连接 MySQL DataTable 中的两列?