【发布时间】:2013-09-08 07:25:45
【问题描述】:
我正在尝试创建一个 SQL Server 用户定义函数 (UDF),它计算分数并在表创建过程中应用该函数。
该表有以下列:
MemberID(PK)
Gender
Name
DOB
Weight
Height
SmokingHabit
Salary
CalculatedScore
计算的分数是根据下面每个单独分数的总和计算得出的
参数
年龄
- 如果年龄在 20-30 之间,则得分为 5
- 如果年龄在 31-40 之间,则得分为 4
- 如果年龄在 41-50 之间,则得分为 3
- 如果年龄 >50 则得分为 2
体重(公斤)/身高(米)
- 如果介于 20-25 之间,则为 1
- 如果介于 25-30 之间,则得分为 3
- 如果介于 30-35 之间,则得分为 5
- 如果介于 35-40 之间,则得分为 2
吸烟者
- 如果吸烟者状态为“是”,则得分为 0
- 如果吸烟者状态为 NO,则得分为 5
薪水
- 如果薪水低于 5 万美元,则得分为 1
- 如果薪水是 50k-60k 分数是 2
- 如果薪水是60k-70k分数是3
- 如果薪水大于 70k 分数为 4
我完全不知道如何编码,我是从这个开始的
CREATE FUNCTION [dbo].[FCupid]
(
@gender YES/NO,
@name varchar(15),
@dob datetime,
@weight int,
@height int,
@smoker Yes/NO,
@salary int
)
RETURNS @Member table
AS
BEGIN
INSERT @Member ( @gender, @name, @dob, @weight, @height, @smoker, @salary)
SELECT m.gender, m.dob, m.weight, m.height, m.smoker, m.salary,
然后我挣扎。
任何形式的帮助将不胜感激
【问题讨论】:
-
我认为这是 MS SQL 而不是 MySQL 作为标记?还有
@gender和@smoker参数的YES/NO数据类型,这些是bit数据类型吗? -
如果你只传入一组参数,为什么这个函数会返回一个table?这不应该只是将分数返回为
INT吗?? -
@kev 是的,那是个错误。是的,它们又是位数据类型。
标签: sql sql-server user-defined-functions