0

例如,我希望能够编写我可以调用的函数'f()',如下所述。 (请注意,@tbl是我以前的列VAR1和VAR2创建了一个用户定义的存储器表,我的函数“F”为用户定义的表类型的参数调用。)有没有办法在SQL中编写函数,它将返回一个可以在select语句中调用的列?

SELECT t1.Var1, t1.Var2, f(@tbl) OVER (PARTITION BY t1.Var1) 
From @tbl as t1 

似乎用户定义的函数将返回表值或标量值。我需要能够返回一个列,因为我想按组给定一个列。

+0

您正在与哪些RDBMS合作? MySQL的?甲骨文? SQL Server?它看起来可能是SQL Server,但我想确定。 –

+0

假设它是SQL Server,CROSS APPLY很可能会给你你正在寻找的东西。 –

+0

你想在什么基础上选择那些列,之后是什么?为什么? – KumarHarsh

回答

0

标量值函数将会给你列

0

与标量函数

如:

1创建函数

CREATE FUNCTION [dbo].[duplicate] (@number int) 
returns double 
as 
begin 
declare @duplicate double 
set @duplicate = @number * 2 
return @duplicate 
end 

/****/

2使用功能

我们有一个表 “数字”,如:

ID | val

1 | 2

2 | 5

3 | 3

然后

select id, duplicate(val) as dup 
from numbers 

结果:

ID | dup

1 | 4

2 | 10

3 | 6

相关问题