如何组合两个在SQL Server中没有公共列的表?

时间:2013-03-04 19:26:00

标签: sql-server-2008 tsql

如何将两个表合并为一个显示两个表中的列的表?我的一个表是常规表,从这个表我需要将值提供给另一个表,这是一个标量值函数作为参数。

例如

T1 -> | c1 | c2 | c3 | 
  ________________

T2 -> fnGetValue(@c1) -> one column table

我需要组合这两个表,但是c1需要作为参数传递以从T2获取值。

1 个答案:

答案 0 :(得分:1)

如果fnGetValue是一个表值函数,那么您可以使用APPLY运算符:

select t1.c1, t1.c2, t1.c3, t2.*
from table1 t1
outer apply fnGetValue(t1.c1) t2

来自MSDN Docs

  

OUTER APPLY返回产生结果集的行和不具有NULL值的行,表值函数生成的列中包含NULL值。

如果fnGetValue是标量函数,那么您应该可以使用:

select t1.c1, t1.c2, t1.c3, fnGetValue(t1.c1) as Value
from table1 t1