我有一张桌子' Cashup_Till'它记录了特定日期在特定日期的场地中记录的所有数据,每个场地都有多个标记,所有数据都带有指定的数字' Till_No'。我需要为每个号码获得前2天的条目。对于每个人来说,我可以做到这一点......
SELECT TOP 2 T.* FROM CashUp_Till T
WHERE T.Till_No = (Enter Till Number Here)
ORDER BY T.Till_Id DESC
有些场地有20到30次,所以理想情况下我需要在一次通话中完成所有的操作。我可以传入一个用户定义的表格类型的数字,然后在子查询中选择它们,但就我的SQL知识带给我的那样,是否有人有解决方案?
答案 0 :(得分:1)
这是一种方式:
SELECT T.*
FROM (SELECT T.*,
ROW_NUMBER() OVER (PARTITION BY Till_No ORDER BY Till_Id DESC) as seqnum
FROM CashUp_Till T
) T
WHERE seqnum <= 2;
这假设每天有一条记录,我认为这是由问题提出的。
如果你有一个单独的tills表,那么:
select ct.*
from t cross apply
(select top 2 ct.*
from cashup_till ct
where ct.till_no = t.till_no
order by till_id desc
) ct;