如何在SQL Server数据库中的WHERE子句中按日期获取数据的使用情况语句



请帮助我找到解决方案。

我想展示昨天的商品最高价格,如果昨天没有昨天最高价格之前的条目。

以下是我的SQL Server查询。我正在使用SQL Server 2012 Management Studio

SELECT 
    MARKETNAME, COMMODITY, MAXPRICE
FROM 
    (SELECT 
         *, 
         ROW_NUMBER() OVER (PARTITION BY commodity ORDER BY maxprice DESC) rn
     FROM 
         markets 
     WHERE
         date = (DATEADD(day, DATEDIFF(day, 1, GETDATE()), 0)
    ) X
WHERE 
    rn = 1

此查询显示昨天的最高商品价格,如果昨天没有出售商品,查询结果将是空的,而是我想在昨天的Maxprice之前展示的。

例如:如果昨天大米商品以4000的价格出售,并且昨天售出了5000的售出。那么它应该在昨天的昨天的Maxprice否则。

我该如何实现?

在内部SELECT中,您从昨天开始只有行,因为date = (DATEADD(day, DATEDIFF(day, 1, GETDATE()), 0)WHERE子句中。您还需要允许昨天的前一天。将OR date = (DATEADD(day, DATEDIFF(day, 2, GETDATE()), 0)之类的内容添加到该WHERE子句中。然后将Date DESC,添加到MaxPrice之前的排序中,以便最小的rm of1。

最新更新