读书人

over分组以后想给不同的group编上号

发布时间: 2013-07-08 14:13:00 作者: rapoo

over分组之后,想给不同的group编上号
使用的sql如下:

SELECT BusinessEntityID, TerritoryID
,DATEPART(yy,ModifiedDate) AS SalesYear
,CONVERT(varchar(20),SalesYTD,1) AS SalesYTD
,CONVERT(varchar(20),AVG(SalesYTD) OVER (PARTITION BY TerritoryID
ORDER BY DATEPART(yy,ModifiedDate)
),1) AS MovingAvg
,CONVERT(varchar(20),SUM(SalesYTD) OVER (PARTITION BY TerritoryID
ORDER BY DATEPART(yy,ModifiedDate)
),1) AS CumulativeTotal
FROM Sales.SalesPerson
WHERE TerritoryID IS NULL OR TerritoryID < 5
ORDER BY TerritoryID,SalesYear;

生成的效果如下:
over分组以后,想给不同的group编上号

这个已经实现。

那么现在我想在最前边加一个列groupNumber,这个列根据TerritoryID 来显示,也就是TerritoryID为Null的,groupNumber就为1;TerritoryID为1的,groupNumber就为2...最后的效果图如下:
over分组以后,想给不同的group编上号

这个如何实现呢?在线等!!!

SQL over
[解决办法]
试试Row_number函数
[解决办法]

引用:

Quote: 引用:

试试Row_number函数


用过这个Row_number() over(partition by column_1 order by column_2 desc),但是这个属于一个group内相同数据的排序,就像这样子!
over分组以后,想给不同的group编上号

手机打字不好写语句,你再试试dense_rank这两个函数应该可以解决你的问题。

读书人网 >SQL Server

热点推荐