如何在ASC RANK中获得DATES-ORDER日期的RUNNING TOTAL

时间:2014-07-16 21:02:19

标签: sql-server-2008 count inner-join running-total

想象一下,您的成员具有不同的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 个答案:

答案 0 :(得分:0)

使用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