Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在select语句中调用UDF?_Sql Server_Udf - Fatal编程技术网

Sql server 如何在select语句中调用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

如何开发不接受任何值并计算每个员工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        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日期)分组,或者您可能只需要在选择后使用一个不同的值。