sql - 如何使用 sql 加入 2 个表(尝试内连接但没有得到我想要的结果)
问题描述
例如,我有 2 个表:
city_A city_B
-------------------
A B
A C
B A
B C
C A
C B
city number_of_covid date
-------------------------------
A 3 2020-02-01
A 6 2020-02-02
B 2 2020-02-01
B 9 2020-02-02
C 4 2020-02-01
C 10 2020-02-02
我想要这样的东西:
city_A total_covid_in_A city_B total_covid_in_B date
--------------------------------------------------------------
A 3 B 2 2020-02-01
A 6 B 9 2020-02-02
A 3 C 4 2020-02-01
A 6 C 10 2020-02-02
B 2 A 3 2020-02-01
B 9 A 6 2020-02-02
B 2 C 4 2020-02-01
B 9 C 10 2020-02-02
C 4 A 3 2020-02-01
C 10 A 6 2020-02-02
C 4 B 2 2020-02-01
C 10 B 9 2020-02-02
如何使用 SQL 查询来做到这一点?我尝试使用内部连接,但没有得到我想要的结果
解决方案
您的问题没有解释需要如何链接日期。如果我要进行简单的联接操作,我还希望记录“city_a 为 A,city_b 为 B,日期为 '2020-02-02' ",但你的结果集没有显示它。我假设你想按照 city_b 的字母顺序从每天开始分配 covid 病例数。以下查询将帮助您获得所需的结果集:
SELECT c.city_a
,c.total_covid_in_a
,c.city_b
,d.number_of_covid AS total_covid_in_b
,c."date"
FROM
(
SELECT a.city_a
,b.number_of_covid AS total_covid_in_a
,a.city_b
,b."date"
FROM
(
SELECT DISTINCT city_a
,city_b
,ROW_NUMBER() OVER (PARTITION BY city_a ORDER BY city_b ASC) AS rnk
FROM Table1
) a
JOIN (
SELECT DISTINCT city
,number_of_covid
,"date"
,ROW_NUMBER() OVER (PARTITION BY city ORDER BY "date" ASC) AS rnk
FROM Table2
) b
ON a.city_a = b.city
AND a.rnk = b.rnk
) c
JOIN Table2 d
ON c.city_b = d.city
AND c."date" = d."date"
ORDER BY city_a, city_b;
推荐阅读
- c# - 在当前情况下,我将如何在“组织”类中编写搜索和删除方法
- windows - Git 子树 - 子树是最新的,但不能推送到 Windows
- python - 如何使用 python 通过 POST 请求将成员/用户添加到 Rancher Project?
- jenkins - Jenkins Pipeline 在阶段之间使用从一个作业到另一个作业的参数
- c# - Moq 验证 Times.Once 不使用 It.Is 特定参数
- jquery - Concave and convex shape div
- java - org.hibernate.PersistentObjectException:分离的实体传递给持久化,同时使用 hashMap 持久化对象
- google-cloud-platform - 在数据流中编写 ETL
- r - 编写循环以通过列名执行功能
- c# - Xamarin ios 生成错误错误:无法链接程序集。原因:处理引用时出错