日期:2014-05-17  浏览次数:20531 次

sql 存储过程 如何写?
我想写一个存储过程,实现上图效果,就是按class分类,然后设置value的值,弄个了半天,弄不出来啊  大家帮帮忙啊 谢谢

------最佳解决方案--------------------
--CREATE TABLE huang (id INT ,class INT,VALUE int)
 --INSERT INTO Huang
 --SELECT 7,1,NULL 
 --UNION ALL 
 --SELECT 8,1,NULL 
 --UNION ALL 
 --SELECT 3,1,NULL 
 --UNION ALL 
 --SELECT 4,2,NULL 
 --UNION ALL 
 --SELECT 5,2,NULL 
 --UNION ALL 
 --SELECT 6,2,NULL 
 
 
 SELECT id,class,RANK()OVER(PARTITION BY class ORDER BY id)VALUE
 FROM Huang
 
 /*
 id          class       VALUE
 ----------- ----------- --------------------
 1           1           1
 2           1           2
 3           1           3
 7           1           4
 8           1           5
 4           2           1
 5           2           2
 6           2           3
 
 (8 行受影响)
 
 
 */

------其他解决方案--------------------
造数据的那个你就不用看了,这个查询出来你再update过去
------其他解决方案--------------------
引用:
SQL code
?



12345678910111213141516171819202122232425262728293031323334

--CREATE TABLE huang (id INT ,class INT,VALUE int)  --INSERT INTO Huang  --SELECT 7,1,NULL   --UNION ALL   --SELECT 8,……



是可以查询,不过我是要修改那个value的值  修改成那样  
------其他解决方案--------------------
;with cte as (SELECT id,class,RANK()OVER(PARTITION BY class ORDER BY id)VALUE
  FROM Huang)
update tb
set a.value=b.value
from tb a inner join cte b on a.id=b.id
------其他解决方案--------------------
引用:
;with cte as (SELECT id,class,RANK()OVER(PARTITION BY class ORDER BY id)VALUE
  FROM Huang)
update tb
set a.value=b.value
from tb a inner join cte b on a.id=b.id



这个还是不行啊  报错  无法绑定由多个部分组成的标识符 "a.value"。