我有一个表(表1),只有一列,是月份级别的日期列表: 2023-12-01、2024-01-01、2024-01-01等
我有另一个表(表2),其日期列采用 YYYY-MM-DD 00:00:00 格式。还有一个记录#列。
记录# | 日期 |
---|---|
记录1 | 2024-01-23 xyz时间 |
记录2 | 2024-01-13 xyz时间 |
记录3 | 2024-02-12 xyz时间 |
记录4 | 2024-03-04 xyz时间 |
我想维护表 1 中的日期列表,并将表 2 中的所有记录与表 1 中的日期对齐。
t1.日期 | 记录# | t2.日期 |
---|---|---|
2023-12-01 | ||
2024-01-01 | 记录1 | 2024-01-23 xyz时间 |
2024-01-01 | 记录2 | 2024-01-13 xyz时间 |
2024-02-01 | 记录3 | 2024-02-12 xyz时间 |
2024-03-01 | 记录4 | 2024-03-04 xyz时间 |
我试过这个:
SELECT t1.date, t2.record, t2.date
FROM t1
LEFT JOIN t2 ON DATEADD(MONTH, DATEDIFF(MONTH, 0, t1.date), 0) LIKE DATEADD(MONTH, DATEDIFF(MONTH, 0, t2.date), 0)
但是我丢失了 2023-12-01 的空白行。我认为是连接子句造成的,但我不确定为什么 LEFT JOIN 不保留数据。我尝试了 OUTER join 但得到了相同的结果。
有人可以帮忙吗?
我将 WHERE 子句移至连接子句中,现在我看到空白行。