sql - 表中两列的所有组合
问题描述
我有一张这样的桌子
date |job|score
----------------------
04-01-2020 |j1 |123
04-01-2020 |j2 |524
04-01-2020 |j3 |323
04-02-2020 |j1 |533
04-02-2020 |j2 |242
04-03-2020 |j1 |432
04-03-2020 |j2 |732
04-03-2020 |j3 |932
如果您查看表作业 j3 没有 2020 年 4 月 2 日的条目。
我正在寻找的是
date |job|score
----------------------
04-01-2020 |j1 |123
04-01-2020 |j2 |524
04-01-2020 |j3 |323
04-02-2020 |j1 |533
04-02-2020 |j2 |242
04-02-2020 |j3 |null <---- This is what I am trying to get
04-03-2020 |j1 |432
04-03-2020 |j2 |732
04-03-2020 |j3 |932
我想要日期和工作的所有可能组合以及分数。如果分数不存在,则为空。我正在尝试一些交叉连接,但没有运气。
解决方案
使用 across join
生成行,然后使用 aleft join
引入现有值:
select d.date, j.job, t.score
from (select distinct date from t) d cross join
(select distinct job from t) j left join
t
on t.date = d.date and t.job = j.job;
推荐阅读
- javascript - 获取 webpack 入口点名称并在加载器中重用它
- ubuntu - 在 ubuntu 中更改文件权限
- c# - 使用 Stream 生成的 SendGrid 附件显示不受保护
- excel - Excel:带有单元格的列的产品总和
- python - 为什么挤压不适用于稀疏数组?
- sql - IntegrityError:在表“carts_cart_items”上插入或更新违反外键约束
- php - 即使更换了实际的密钥,谷歌验证码也无法正常工作
- pagespeed-insights - 有什么方法可以增加启用了 Google Adsense 的页面的 pagespeed-insight 分数?
- angular - 使 Windows 身份验证与 IIS 下的 Identity Server 4 一起工作
- django - 在 django admin 中动态更改表单的一部分