回答

收藏

使用 PostgreSQL 合并表

技术问答 技术问答 354 人阅读 | 0 人回复 | 2023-09-12

这个问题的标题不准确,但我不知道如何总结。如果可以,请随意再写一遍!- x* T) \+ c( @1 w3 x- @6 [9 l# S
这是两个表的摘录:
( E" |1 X, U; A( P  F表 table_a
$ e6 T+ ]0 N$ ]+ q% ?code  | year   | nb_a------ -------- ------  A1  |   2017 |                                             A2  |   2012 |   2  A3  |   2014 |    2表 table_b' Q5 e6 k, u1 p$ S9 B4 J; T
code  | year   | nb_b------ -------- ------  A1  |   2013 |    1  A1  |   2014 |    1  A2  |   2012 |    1为了获得此输出,我需要合并这些表:# o' j, h8 k# u. b5 {; |
code  | year   | nb_a | nb_b | total------ -------- ------ ------ -------  A1  |   2013 |    0 |    1 |     1  A1  |   2014 |    0 |    1 |     1  A1  |   2017 |    1 |    0 |     1  A2  |   2012 |    2 |    1 |    3  A3  |   2014 |    2 |    0 |     2我找不到正确的查询。我需要像下面这样的东西(我知道它不能完成这项工作),但如何将所有代码和年份合并到一个表中,因为代码和年份没有在两个表中重复......
3 L# k! e5 q3 O: k4 `SELECT   code, "year", table_a.nb_a, table_b.nb_b, table_a.nb_a   table_b.nb_b AS totalFROM table_a,table_bWHERE table_a.code = table_b.code;以下是上表快速创建 SQL 脚本:
% }+ z6 f$ H, y: v# ACREATE TABLE public.table_a (code TEXT,"year" INTEGER,nb_a INTEGER);CREATE TABLE public.table_b (code TEXT,"year" INTEGER,nb_b INTEGER);INSERT INTO public.table_a (code,"year",nb_a) VALUES (A1,2017,1),(A2,2012,2),(A3,2014,2);INSERT INTO public.table_b (code,"year",nb_b) VALUES (A1,2013,1),(A1,2014,1),(A2、2012、1);              U! e0 t( w# C! f$ `7 d, J4 T1 V
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则