gpt4 book ai didi

mysql - 将包含特定日期的不常见值的表转换为包含一段时间内所有日期的表

转载 作者:行者123 更新时间:2023-11-29 14:38:44 24 4
gpt4 key购买 nike

我得到了以下 MySQL 表,存储了特定日期的值:

| date       | value |
======================
| 2009-03-29 | 0.5 |
| 2010-01-30 | 0.55 |
| 2011-08-12 | 0.67 |

现在我需要另一个表,将这些值映射到表中第一个和最后一个日期范围内的每一天(填补空白)。所以最终它应该是这样的:

| date       | value |
======================
| 2009-03-29 | 0.5 |
| 2009-03-30 | 0.5 |
| 2009-04-01 | 0.5 |
| ... | ... |
| 2010-01-30 | 0.55 |
| 2010-02-01 | 0.55 |
| 2010-02-02 | 0.55 |
| ... | ... |
| 2011-08-10 | 0.55 |
| 2011-08-11 | 0.55 |
| 2011-08-12 | 0.67 |

有没有办法在 SQL 查询中解决这个问题?

最佳答案

从另一种情况来看,您似乎正在做的是显示一段时间内的值趋势,即使可能不会每天提供值......所以,您可能从 10 月 1 日开始, 2011 年至 2011 年 12 月 1 日(或任何其他日期范围)。

您可以通过使用 mysql 变量并连接到至少具有您想要回顾的天数的任何表(其中我有“AnyOtherTableInYourDatabase”)来轻松模拟整个日期范围。在仅显示日期的示例中,我从当前日期开始,然后往回说……60 天。您还可以用其他内容更改“开始日期”,并根据需要后退/前进。

select  JustDates.OneDate
from
( SELECT
@r:= date_add(@r, interval 1 day ) OneDate
FROM
(select @r := current_date()) vars,
AnyOtherTableInYourDatabase limit 30 ) JustDates

现在,要获取最新的“阅读内容”,请通过 select/from 添加一列。然后,将该结果集重新加入到原始读数表中以获得有问题的值

select
PreQuery.OneDate,
PreQuery.LatestReading,
Y2.Value
from
( select JustDates.OneDate,
( select max( YRT.Date )
from YourReadingsTable YRT
where YRT.Date <= JustDates.OneDate ) as LatestReading
from
(SELECT @r:= date_add(@r, interval 1 day ) OneDate
FROM (select @r := current_date()) vars,
AnyOtherTableInYourDatabase limit 30 ) JustDates ) PreQuery
JOIN YourReadingsTable Y2
on PreQuery.LatestReading = Y2.Date

关于mysql - 将包含特定日期的不常见值的表转换为包含一段时间内所有日期的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8445979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com