新手求教各位高手一个存储过程:
一个工资表,三个字段:ID,Name,Price;现在要给所有人加工资,每次加100元,加到大于等于6000就不加了;同时如果半数以上的人的工资都加到6000或以上,那么所有的人都不在增加工资。
求高手给予帮助,谢谢!
一个工资表,三个字段:ID,Name,Price;现在要给所有人加工资,每次加100元,加到大于等于6000就不加了;同时如果半数以上的人的工资都加到6000或以上,那么所有的人都不在增加工资。
求高手给予帮助,谢谢!
as
set nocount on
update tb set price=price+100
where price<6000go
alter proc proc_a
as
begin
if(select COUNT(1) from a where price>=6000)<(select COUNT(1)/2 from a)
update a set price=price+100 where price<6000
end
(
ID VARCHAR(20),
[NAME] VARCHAR(20),
Price NUMERIC(18,2)
)
INSERT INTO Table_A(ID,[NAME],Price)
SELECT '0001','张三',4000
union all
SELECT '0002','李四',5900
union all
SELECT '0003','王二',6000
union all
SELECT '0004','麻子',6500
union all
SELECT '0005','温某',4800CREATE PROC PROC_A
AS
BEGIN
declare @mCount int
SELECT @mCount = COUNT(1) FROM Table_A
WHERE Price >= 6000 IF @mCount > CONVERT(numeric(18,1),(CONVERT(numeric(18,1),(SELECT COUNT(1) FROM Table_A))/2.0))
BEGIN
Return -2 /*提示'半数以上的人的工资都加到6000或以上'*/
END UPDATE Table_A
SET Price = IsNull(Price,0.00) + 100
WHERE Price < 6000
END/*执行存储过程*/
EXEC PROC_AID NAME Price
-------------------- -------------------- ---------------------------------------
0001 张三 4100.00
0002 李四 6000.00
0003 王二 6000.00
0004 麻子 6500.00
0005 温某 4900.00(5 行受影响)
应该是下面这样
@mCount < CONVERT(numeric(18,1),(CONVERT(numeric(18,1),(SELECT COUNT(1) FROM Table_A))/2.0))