如何从表函数和另一个表中的列中进行选择

时间:2014-04-14 14:29:31

标签: sql-server

我有一个返回表的函数。它需要一个参数并返回一行。

我想从该函数中选择值以及同一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)

1 个答案:

答案 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中的