我有一个返回表的函数。它需要一个参数并返回一行。
我想从该函数中选择值以及同一SELECT staement中另一个表的列。
这样的事情:
SELECT a.col1, a.col2, b.col1, b.col2
FROM tab1 a INNER JOIN
func1(a.col1) b ON a.col1 = b.col1
WHERE a.col1 IN (123,456,789)
这不起作用,但我有办法做到这一点。
因此,例如,如果func 1为示例中的三个值中的每一个返回以下内容:
col1 col2
123 abc
456 def
789 xyz
然后我期待我的查询得到以下结果:
col1 col2 col1 col2
123 xxx 123 abc
456 yyy 456 def
789 zzz 789 xyz
我可以这样做,但我不想多次为函数中的每一列调用该函数:
SELECT col1, col2, (SELECT col1 FROM func1(a.col1)), (SELECT col2 FROM func1(a.col1))
FROM tab1 a
WHERE a.col1 IN (123,456,789)
答案 0 :(得分:0)
这段代码是真的
alter FUNCTION GETTABLE()
RETURNS @rtnTable TABLE
(
SUM_CD nvarchar(15) NOT NULL,
Name nvarchar(255) NOT NULL
)
AS
BEGIN
DECLARE @TempTable table (SUM_CD Nvarchar(15), name nvarchar(255))
insert into @TempTable(SUM_CD,name) values ('300001','Ahmed')
insert into @TempTable(SUM_CD,name) values ('300002','Mohamed')
insert into @rtnTable
select * from @TempTable
return
END
select * from GLSUMS g inner join dbo.gettable() s on s.SUM_CD=g.SUM_CD
SQL SERVER 2012中的