[英]Writing SQL function but its not working as desired
奖金 | 工人 | |
---|---|---|
90 | 1 | |
90 | 2 | |
50 | 3 | |
40 | 4 | |
30 | 5 | |
20 | 6 | |
10 | 7 |
假设我有一个上面显示的列(它可能以水平顺序列出,抱歉错误)我编写了一个用户定义的函数并想将奖金乘以 3,但我的列中有两个相同的值。 我希望该功能可以检测两个具有相同奖金金额的工人并打印“两名工人具有相同的奖金金额”谁可以帮助摆脱这种情况?
Create function newfunction
(
@bonus as integer
, @workers as integer
)
returns varchar(25)
as
begin
declare @equality as integer
declare @returnvalue as varchar(25)
Select @equality = Bonus
from Employeestbl
Where Workers = @workers
If @equality = @Bonus set @returnvalue = 'there is an error'
return @returnvalue
end
select *, dbo.newfunction(employeestbl.bonus,employeestbl.workers)
from Employeestbl
我希望该功能可以检测两个具有相同奖金金额的工人并打印“两名工人的奖金金额相同”
这个查询会发现:
IF EXISTS (SELECT Bonus, COUNT(*) FROM Table GROUP BY Bonus HAVING COUNT(*) > 1) PRINT 'two workers have same bonus amount'
想要将奖金乘以 3
UPDATE MyTable SET Bonus = Bonus * 3
假设您不想在两个奖金相同的情况下应用奖金,这里有一个脚本来做到这一点:
IF EXISTS (
SELECT Bonus, COUNT(*) FROM Table GROUP BY Bonus HAVING COUNT(*) > 1
)
BEGIN
PRINT 'two workers have same bonus amount'
END
ELSE
BEGIN
UPDATE MyTable SET Bonus = Bonus * 3
END
set returnvalue
这是一个变量,必须set @returnvalue
你在函数中有语法错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.