请帮助我找到解决方案。
我想展示昨天的商品最高价格,如果昨天没有昨天最高价格之前的条目。
以下是我的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。