如何在 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

Hive中4个By的区别以及如何调优?你知道么?

爬取页面和审查元素获取的内容不一致

如何将 rank() 与内部连接一起使用?

获取 SELECT 语句中的最后 3 行并将其设为 ASC 顺序

如何使用 Redshift 从 JSON 数组列中获取值?