如何在一周中的每一天的每一天中创建空条目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在一周中的每一天的每一天中创建空条目相关的知识,希望对你有一定的参考价值。
我有一个包含一些事件数据的表。它看起来如下:
+------+-----------+--------+
| Week | day | value1 |
+------+-----------+--------+
| 2 | Monday | 5 |
| 2 | Thursday | 2 |
| 2 | Sunday | 1 |
| 3 | Monday | 2 |
| 3 | Tuesday | 2 |
| 3 | Wednesday | 0 |
| 3 | Thursday | 9 |
| 9 | Friday | 3 |
+------+-----------+--------+
现在,我希望此表中的每个星期都有星期几的条目。如果不存在,则必须将其填充。像这样:
+------+-----------+--------+
| Week | day | value1 |
+------+-----------+--------+
| 2 | Monday | 5 |
| 2 | Tuesday | Null |
| 2 | Wednesday | Null |
| 2 | Thursday | 2 |
| 2 | Friday | Null |
| 2 | Saturday | Null |
| 2 | Sunday | 1 |
+------+-----------+--------+
等
到目前为止,我尝试将表中的所有星期都用起来,将它们与一周中所有天的列表交叉连接,然后将其正确地连接到一周中,但没有成功。
进行此整个练习的原因是,我可以获得一个数值为每天的几周之间差异的增量表。
感谢所有技巧!
答案
假设表中每天都有值,则:
select w.week, d.day, t.value1
from (select distinct week from t) w cross join
(select distinct day from t) d left join
t
on t.week = w.week and t.day = d.day;
以上是关于如何在一周中的每一天的每一天中创建空条目的主要内容,如果未能解决你的问题,请参考以下文章