我有一个用日期/人物键入的表,它有两个值列(val1,val2)。在大多数情况下,他们都被填补。但是,有些情况(需要修复),其中一个填充,另一个为空。这些病例通常成对出现,相隔一天。对于每个人来说,彼此之间不会有两对。
我使用以下查询选择了在给定人员的另一个条目(占周末)的3天内的所有日期:
SELECT distinct t1.* from mytable t1
INNER JOIN mytable t2 ON t1.person = t2.person and t1.date <> t2.date
WHERE abs(datediff(t1.date,t2.date))<= 3
返回:
+------------+------------+-------+-------+
| date | person | val1 | val2 |
+------------+------------+-------+-------+
| 2009-10-26 | A | null | 62 |
| 2009-10-27 | A | 4 | null |
| 2010-01-02 | A | 2 | null |
| 2010-01-04 | A | null | 101 |
| 2010-01-04 | B | null | -4 |
| 2010-01-06 | B | 3 | null |
+------------+------------+-------+-------+
现在我想要做的事情(这就是我被困住的地方),就是使用从另一对中获取的缺失值来更新每对的早期日期的空值,以创建像这样的东西:
+------------+------------+-------+-------+
| date | person | val1 | val2 |
+------------+------------+-------+-------+
| 2009-10-26 | A | *4 | 62 |
| 2009-10-27 | A | 4 | null |
| 2010-01-02 | A | 2 | *101 |
| 2010-01-04 | A | null | 101 |
| 2010-01-04 | B | *3 | -4 |
| 2010-01-06 | B | 3 | null |
+------------+------------+-------+-------+
提前致谢!