SQL在查询中创建自定义排名

时间:2017-08-02 15:13:17

标签: sql sql-server sql-server-2014

我正在尝试在查询中创建自定义排名或顺序,以便我可以看到按用户按时间顺序分组的事件序列。我想要实现的是“Desired_Rank”下的顺序,但我只能创建最后2列。任何帮助将不胜感激!

dense_rank() OVER( ORDER BY date ,user_id) Current_Rank_1
dense_rank() OVER( ORDER BY user_id) Current_Rank_2


User_ID   Date      Desired_Rank    Current_Rank_1   Current_Rank_2
  a     12/23/2016     1               1                  1
  b     12/27/2016     2               2                  2
  a     2/24/2017      3               3                  1
  c     2/24/2017      4               4                  3
  d     5/3/2017       5               5                  4
  d     5/5/2017       5               6                  4
  d     5/9/2017       5               7                  4
  d     5/9/2017       5               7                  4

1 个答案:

答案 0 :(得分:1)

您可以使用SELECT Count(*) FROM <DATABASE_NAME>.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' 和运行总和来执行此操作。将当前行的user_id与之前的user_id进行比较,并在遇到更改时重置该值。

lag