cmo*_*nti 6 sql t-sql sql-server rank
我在SQL Server中有这个表:
Year Month Quantity
----------------------------
2015 January 10
2015 February 20
2015 March 30
2014 November 40
2014 August 50
Run Code Online (Sandbox Code Playgroud)
如何识别不同的年份和月份,再添加两列,将相同年份的数字组合在一起,然后按顺序排列不同的月份,例如示例
Year Month Quantity Group Subgroup
------------------------------------------------
2015 January 10 1 1
2015 February 20 1 2
2015 March 30 1 3
2014 November 40 2 1
2014 August 50 2 2
Run Code Online (Sandbox Code Playgroud)
您可以使用DENSE_RANK为您计算组:
SELECT t1.*, DENSE_RANK() OVER (ORDER BY Year DESC) AS [Group],
DENSE_RANK() OVER (PARTITION BY Year ORDER BY DATEPART(month, Month + ' 01 2010')) AS [SubGroup]
FROM t1
ORDER BY 4, 5
Run Code Online (Sandbox Code Playgroud)
看到这个小提琴.