sql - SQL - 用一些不同和一些相同的列连接两个表
问题描述
我有两张桌子,看起来像这样:
表A
-------
AGENCY_ID | ISSUE_YEAR | AMOUNT_ISSUED
00101 | 1996 | 3000
00123 | 1996 | 4000
00165 | 1996 | 3450
00231 | 1996 | 6000
表 B
-------
AGENCY_ID | ISSUE_YEAR | AMOUNT_EXPIRED
00101 | 1996 | 4000
00101 | 1997 | 2550
00123 | 1996 | 1250
00123 | 1997 | 1300
00165 | 1996 | 3333
00165 | 1997 | 3124
00231 | 1996 | 1232
00231 | 1997 | 2422
应该将其连接在一起,合并共享列并将缺失值填充为 0,如下所示:
表JOINED_A_B
-------
AGENCY_ID | ISSUE_YEAR | AMOUNT_EXPIRED | AMOUNT_ISSUED
00101 | 1996 | 4000 | 3000
00101 | 1997 | 2550 | 0
00123 | 1996 | 1250 | 4000
00123 | 1997 | 1300 | 0
00165 | 1996 | 3333 | 3450
00165 | 1997 | 3124 | 0
00231 | 1996 | 1232 | 6000
00231 | 1997 | 2422 | 0
我曾尝试使用UNION
它们来连接它们,但我的结果表的维度始终与运算符左侧的维度相同UNION
(SELECT A UNION SELECT B
结果表中没有列AMOUNT_EXPIRED
)。
我应该如何正确地做到这一点?也许联盟不是一个好的选择?
谢谢!
解决方案
你似乎想要left join
和coalesce()
:
select b.*, coalesce(a.amount_issued, 0) as amount_issued
from b left join
a
on b.agency_id = a.agency_id and b.issue_year = a.issue_year;
推荐阅读
- reactjs - 如何使用带有 React.js 的 Material-ui 在自动完成菜单上添加更新和删除按钮
- javascript - Ajax 查询以在 django admin 中获取下拉项目
- reactjs - 使用套接字更新 mui 数据网格,仅添加一个元素
- artificial-intelligence - 如何奖励代理在自我对抗游戏强化学习中的行为?
- python - itertools groupby中没有出现值 - python
- pine-script - 函数“max_bars_back”未按预期工作
- sqlite - 为什么我会得到“不明确的列名:account.accrued”?
- python - 将列表元素拆分为python中的列表
- c# - Unity UI - 如何制作“复合”布局组以在同一位置组合多个图像?
- r - 如何在没有“c”的圆括号中将矢量放入胶水中?