我对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个记录的东西。 提前谢谢......
答案 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条,那么您将从另一天获得记录。