Sql server 如何在select语句中调用UDF?
如何开发不接受任何值并计算每个员工id的佣金的表格UDF。 我有一张名为“竞选报价”的桌子Sql server 如何在select语句中调用UDF?,sql-server,udf,Sql Server,Udf,如何开发不接受任何值并计算每个员工id的佣金的表格UDF。 我有一张名为“竞选报价”的桌子 Create Table Campaign_Offer ( Offer_id integer identity(1,1) primary key, Offer_date Date , Customer_id int , Offer_value money , Product_name varch
Create Table Campaign_Offer
(
Offer_id integer identity(1,1) primary key,
Offer_date Date ,
Customer_id int ,
Offer_value money ,
Product_name varchar(20) ,
Acceptance_status varchar(3) ,
Employee_ID char(10) ,
Constraint CustomerID foreign key (Customer_id) references marketing_list(Id),
Constraint EmployeeID foreign key (Employee_ID) references Employee(Employee_id),
Constraint AcceptanceStatus Check (Acceptance_status in ('yes', 'no'))
)
这就是我试图调用的函数
Create Function OfferCommission (@OfferValue money,@OfferDate date)
Returns money
As
Begin
RETURN @OfferValue * CHOOSE(DATEPART(QUARTER,@OfferDate), 0.1, 0.15, 0.2,
0.25)
END
我在这里试过
Create Function TabularCommission
(
@Offer_id integer,
@Offer_value money,
@Acceptance_status varchar(3)
)Returns table
As
Return
(
Select Employee_ID,dbo.OfferCommission(Offer_value, Offer_date) as
Commission from Campaign_Offer
where Acceptance_status = 'yes'
group by Employee_ID
)
您不需要将参数传递给外部函数
Create Function TabularCommission()
Returns table
As
Return
(
Select Employee_ID
,dbo.OfferCommission(Offer_value, Offer_date) as Commission
from Campaign_Offer
where Acceptance_status = 'yes'
)
谢谢,但我得到的是“Campaign\u Offer.Offer”列的值,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。您不需要
GROUP BY
,如果出于某种原因,您确实希望在此之前拥有一个组,那么您需要它。按员工ID、dbo.OfferCommission(Offer\u值、Offer\u日期)分组,或者您可能只需要在选择后使用一个不同的值。