将sql中的数据除以另一列的组顺序

时间:2015-08-30 12:35:57

标签: sql sql-server

我有这组数据

.png

我需要的是得到这个结果

404

如何让所有群体排名但按日期排序

2 个答案:

答案 0 :(得分:1)

SELECT * 
      , DENSE_RANK() OVER (ORDER BY companyId DESC, [Date] DESC) AS [DENSE_RANK]
FROM TableName

答案 1 :(得分:0)

如果您希望按日期排序组,则需要两个步骤:首先获取每个组的最大日期。然后使用dense_rank()

select shopid, companyid, date,
       dense_rank() over (order by maxd desc) as dense_rank
from (select t.*, max(date) over (partition by companyid) as maxd
      from table t
     ) t

注意:这假设您的日期确实存储为日期而不是字符串。如果数据(不正确地)存储为字符串,则需要进行其他转换。