我可以将多个列的结果结合到没有联合的单列中吗?在SQL Server 2012中



我想将2列输出组合到一个列中。

示例:

select 1 as id, 2 as exid 

当前输出:

id | exid 
1  |    2

,但我想要以下输出:

id
 1
 2

如果我使用Concat函数,则输出看起来像:

id  
12 

,我不想使用这种输出。

注意:我不想使用UNION函数。

undivot将帮助您实现自己正在尝试做的事情

select exprid [id] from
(select 1 [id],2 [expid]
) s
unpivot (exprid for col in (id,expid)) as t2

与使用联合相比,这应该更快,因为它只会扫描一次,而不是两次。

另一种方法使用 outer apply

select x.*
from t outer apply
     (values (id), (exid)) x(id);

但是,union all是一种非常合理的方法,因此我经常建议使用它。

最新更新