SQL获取每个列值的前2个结果
我有一个表“Cashup_Till”,它记录了某一特定场所在给定日期内记录的所有数据,每个场所都有多个Till,都有一个指定的数字“Till_No”。我需要得到前2天的条目为每个数字。对于每个人,我可以这样做SQL获取每个列值的前2个结果,sql,sql-server,Sql,Sql Server,我有一个表“Cashup_Till”,它记录了某一特定场所在给定日期内记录的所有数据,每个场所都有多个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个收银台,因此理想情况下,我需要在一次通话中完成所有收银台。
SELECT TOP 2 T.* FROM CashUp_Till T
WHERE T.Till_No = (Enter Till Number Here)
ORDER BY T.Till_Id DESC
有些场地有20-30个收银台,因此理想情况下,我需要在一次通话中完成所有收银台。我可以传入用户定义的表类型的till编号,然后在子查询中选择它们,但就我的SQL知识而言,有人有解决方案吗?这里有一种方法:
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;
哪些列表示地点?@TimBiegeleisen我没有在示例中包括地点/日期列,只是为了简单起见,我在where子句中包含了一个Site_day_Id。您所说的前两天是什么意思?每天是否有多个记录?如果最近一天没有记录怎么办?@GordonLinoff表中有一个Site\u day\u Id列,但我认为没有必要在示例中包括它。是的,您的假设是正确的,每个till每天只有一个条目-我来试一试,谢谢
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;