我讨厌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条。提前感谢。。。
正如我在评论中提到的,正确的语法是:
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条,那么你会得到另一天的记录。