SQL Server SQL根据最大日期返回多个列,并且日期小于特定值

lmvvr0a8  于 2022-12-17  发布在  其他
关注(0)|答案(2)|浏览(151)

我正在尝试做的是找到'最新'广告率的基础上,其日期。我需要返回多列,将由商店分组。我使用SSMS。下面是一个屏幕截图的表看起来像所有的值。忽略ID。

正如你所看到的,这里有多个商店编号,也有一个参数传递给这个select,AdRateDate不能大于这个参数。
如果我的参数是Declare @toDate日期时间= '2022-11-30 00:00:00.000'
则数据返回应为

这是我正在尝试的脚本,我迷路了!

DECLARE @ToDate DATETIME = '2022-11-30 00:00:00.000'  
SELECT StoreNumber, AdRate  
FROM StoreAdRate  
WHERE AdRateDate =  
 (Select Max(AdRateDate) From StoreAdRate Where AdRateDate <= @ToDate And StoreNumber = StoreNumber)
woobm2wo

woobm2wo1#

我认为您的语句是正确的,只是缺少别名来区分子查询和主查询中的StoreNumber。
请尝试以下操作:

DECLARE @ToDate DATETIME = '2022-11-30 00:00:00.000';

SELECT StoreNumber, AdRate
FROM StoreAdRate sar
WHERE AdRateDate = (Select Max(AdRateDate) From StoreAdRate sub 
                    Where sub.AdRateDate <= @ToDate 
                    And sub.StoreNumber = sar.StoreNumber);
8mmmxcuj

8mmmxcuj2#

因此,对于每个商店,您希望在某个指定的日期参数之前获得最近给定的AdRate(以及给定的日期)吗?

SELECT StoreNumber AdRate, AdRateDate
FROM (
  SELECT StoreNumber, AdRate, AdRateDate,
    ROW_NUMBER() OVER (PARTITION BY Store Number ORDER BY AdRateDate DESC) AS   RowNumber
  FROM Wherever
  WHERE AdRateData < @ToDate
) T
WHERE RowNumber = 1

相关问题