首页 > 解决方案 > 分区而不重新排序数据

问题描述

我目前的数据如下:

当前数据

我希望数据是

我想要这个数据

当我使用 row_number 函数时,它会重新排序并给我错误的 row_number,如下所示

错误的结果

如果我们看到“调整后的转换成本”值 0.160 出现在结果的顶部并且编号为 1,根据第一个屏幕截图这是错误的,它应该编号为 3

谢谢

标签: sqlsql-server

解决方案


MYSQL 使用变量

结果 - http://www.sqlfiddle.com/#!9/406f64/8/0

select 
colo1,f7,
if(colo1='Total Adj. Conversion Spend',@initVal:=@initVal+1,1) as RowNumber
from temp,(select @initVal:=0) vars


MS-SQL 使用 Rank 和 Row Number
我使用 Row_Number() 来保留顺序,然后在 case 语句中使用 Rank()
http://www.sqlfiddle.com/#!18/fde9f/15/0

select subquery_1.colo1,subquery_1.f7
,case when subquery_1.colo1='Total Adj. Conversion Spend' then 
rank() over (partition by colo1 order by rownum) else 1 end as rnk
from
(select *,row_number() OVER (ORDER BY (Select 0)) as rownum from temp) as subquery_1
order by subquery_1.rownum

推荐阅读