有没有办法在SQL中编写函数,它将返回一个可以在select语句中调用的列?
问题描述:
例如,我希望能够编写我可以调用的函数'f()',如下所述。 (请注意,@tbl是我以前的列VAR1和VAR2创建了一个用户定义的存储器表,我的函数“F”为用户定义的表类型的参数调用。)有没有办法在SQL中编写函数,它将返回一个可以在select语句中调用的列?
SELECT t1.Var1, t1.Var2, f(@tbl) OVER (PARTITION BY t1.Var1)
From @tbl as t1
似乎用户定义的函数将返回表值或标量值。我需要能够返回一个列,因为我想按组给定一个列。
答
标量值函数将会给你列
答
与标量函数
如:
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
您正在与哪些RDBMS合作? MySQL的?甲骨文? SQL Server?它看起来可能是SQL Server,但我想确定。 –
假设它是SQL Server,CROSS APPLY很可能会给你你正在寻找的东西。 –
你想在什么基础上选择那些列,之后是什么?为什么? – KumarHarsh