如何在 ASC RANK 中获取 DATES-ORDER 日期的 RUNNING TOTAL
Posted
技术标签:
【中文标题】如何在 ASC RANK 中获取 DATES-ORDER 日期的 RUNNING TOTAL【英文标题】:How to get RUNNING TOTAL for DATES- ORDER dates in ASC RANK 【发布时间】:2014-09-07 13:35:47 【问题描述】:假设您有一个具有不同 member_id 和服务日期的成员 您现在需要按升序排列服务日期,并在另一列 (date_count) 中返回这些日期的顺序。最终结果将如下所示:
memberid name date date_count
122 matt 2/8/12 1
122 matt 3/9/13 2
122 matt 5/2/14 3
120 luke 11/15/11 1
120 luke 12/28/14 2
100 john 1/12/10 1
100 john 3/2/12 2
100 john 5/30/12 3
150 ore 5/8/14 1
150 ore 9/9/14 2
这是有效但不返回排名 (1,2,3) 顺序的 date_count 的查询。这反而为 date_count 返回相同的数字,不知道为什么 num
memberid name date_count
122 matt 3
122 matt 3
122 matt 3
120 luke 5
120 luke 5
120 luke 5
100 john 6
100 john 6
150 ore 2
150 ore 2
SELECT A.MEMBERID, A.NAME,A.DATE, COUNT(B.DATE) AS DATE_COUNT FROM #WCV_COUNTS A
INNER JOIN #WCV_COUNTS B
ON A.MEMBERID <= B.MEMBERID
AND A.MEMBERID= B.MEMBERID
GROUP BY A.MEMBERID, A.NAME, A.DATE
ORDER BY A.MEMBERID
提前感谢您的帮助!
【问题讨论】:
【参考方案1】:使用 ROW_NUMBER()
SELECT memberid, name, date,
ROW_NUMBER() OVER (PARTITION BY memberid ORDER BY date) AS date_count
FROM #WCV_COUNTS
ORDER BY memberid, date
【讨论】:
您好 Vishal,这将返回错误“ROW_NUMBER”不是可识别的函数名称...我使用的是 SQL Server 2008... 这很奇怪...请查看此链接:msdn.microsoft.com/en-us/library/ms186734(v=sql.100).aspx以上是关于如何在 ASC RANK 中获取 DATES-ORDER 日期的 RUNNING TOTAL的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Mysql 中使用 rank() 而不是 PARTITION BY