【发布时间】:2021-10-07 15:41:03
【问题描述】:
我有一个 Article Stock 交易表,我只需要以下列:Article、Date 和 Stock。
在同一天,即使在相同的时间戳上,该表也为同一篇文章提供了多个结果,我只需要最新日期的文章。似乎最后一行是具有最新 Stock 值的文章。 Bud 我怎么能在一个只显示最新日期的查询中写这个? (屏幕截图中的蓝色行)
在我的示例中,我只过滤了一篇文章。
SELECT artikel as Article, max(datum) as `Date`, bestand as
Stock FROM data.HB001ARTIKELBESTANDSBEWEGUNG
where datum > "2021-08-11 00:00:00" and datum < "2021-08-13
00:00:00" and lager = 1 and artikel = '5201114970'
group by artikel, bestand, datum
order by artikel;
致以诚挚的问候,
比约恩
我添加了带有自动增量的额外行,所以现在我为每篇具有最新日期的文章获取最高行号。现在我如何过滤每篇文章只能得到一个结果?
SELECT Article, max(CountDate), Stock, Nr FROM data.STOCKCOUNT
where CountDate > "2021-08-11 00:00:00" and CountDate < "2021-
08-13 00:00:00" and Article IN ('5201114970', '1361001580')
group by Article, Stock, CountDate, Nr
order by Nr, CountDate desc, Article;
我添加了带有自动增量的额外行,所以现在我为每篇具有最新日期的文章获取最高行号。现在我如何过滤每篇文章只得到一个结果,每篇文章的最高行号过滤?
SELECT artikel as Article, max(datum) as Date, bestand as Stock,
ROW_NUMBER() OVER(ORDER BY datum asc) as Nr FROM
data.HB001ARTIKELBESTANDSBEWEGUNG b where datum > "2021-08-11
00:00:00" and datum < "2021-08-13 00:00:00" and lager = 1 and
artikel in ('5201114970', '1361001580') group by artikel,
bestand, datum order by datum desc, artikel
【问题讨论】:
-
我认为选择最新日期没有逻辑,因为所有日期值都相同。您需要修改插入查询,或者在表中添加一个自动增量列并选择特定日期的最大自动增量值
-
感谢 Rosh 的回复,我知道这看起来毫无意义,但我查了几篇文章,总是最后一篇是股票价值正确的。表面之下是否有某种时间戳包含更具体的时间戳,可能以毫秒为单位?我将尝试使用自动增量列。
-
将列类型更改为 timestamp(3) 并使用 CURRENT_TIMESTAMP(3) 插入记录以在您的记录中包含毫秒。用 mysql 5.7 测试
-
@rosh-dev 你能告诉我如何过滤最高行号,看看我的回答。时间戳给出:000 毫秒,所以很遗憾我不能使用它。
-
@rosh-dev 我将信息添加到问题中。
标签: mysql unique stock maxdate