读书人

sql 存储过程 怎么写

发布时间: 2012-12-26 14:39:29 作者: rapoo

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"。


[其他解释]

;with cte as (SELECT id,class,RANK()OVER(PARTITION BY class ORDER BY id)VALUE
FROM Huang)
update a
set a.value=b.value
from tb a inner join cte b on a.id=b.id


其实很简单,你把查询出来的插入一个临时表更新就得了。
[其他解释]
引用:
SQL code
?



12345

;with cte as (SELECT id,class,RANK()OVER(PARTITION BY class ORDER BY id)VALUE FROM Huang) update a set a.value=b.value from tb a inner join cte b on a.id=b.id

其实很简……


呵呵 可以了 昨晚弄错了 谢谢哈 O(∩_∩)O~

读书人网 >SQL Server

热点推荐