【问题标题】:How to get RUNNING TOTAL for DATES- ORDER dates in ASC RANK如何在 ASC RANK 中获取 DATES-ORDER 日期的 RUNNING TOTAL
【发布时间】: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

提前感谢您的帮助!

【问题讨论】:

    标签: sql-server-2008 count inner-join cumulative-sum


    【解决方案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
    

    【讨论】:

    猜你喜欢
    • 2019-06-09
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    相关资源
    最近更新 更多