周结束日期,前20个项目数量不正常

时间:2015-02-22 17:59:20

标签: sql sql-server

我对SQL Server查询(特别是那些有日期)感到厌恶,我正在寻找一些帮助返回记录集。 基本上我的任务是按当前最后一周的结束日期按数量返回前20项。如果最近的周末日期只有3项,我只需要返回3条记录。

字段:

WeekEndDate, Quantity, ItemNo

这是我到目前为止所尝试的......

select top (20) t.Item, t.WeekEndDate, t.Quantity
from ItemTable t where t.Quantity > 0 
inner join (
    select  max(WeekEndDate) as MaxDate
    from ItemTable it      
) on t.WeekEndDate = it.MaxDate
order by t.Quantity desc

我想我错过了另一个连接或者只返回最多20个而不是总是返回20个记录的东西。 提前谢谢......

1 个答案:

答案 0 :(得分:1)

正如我在评论中提到的,正确的语法是:

select top (20) t.Item, t.WeekEndDate, t.Quantity
from ItemTable t inner join
     (select  max(WeekEndDate) as MaxDate
      from ItemTable it      
     )
     on t.WeekEndDate = it.MaxDate
where t.Quantity > 0 
order by t.Quantity desc;

如果您知道最近的日期至少有20条记录,则可以删除join

select top (20) t.Item, t.WeekEndDate, t.Quantity
from ItemTable t
where t.Quantity > 0 
order by t.WeekendDate, t.Quantity desc;

当然,如果记录少于20条,那么您将从另一天获得记录。