MS SQL Server:为变量赋值并在查询中重用var

时间:2015-07-10 13:13:30

标签: sql-server variables select

我正在做下面的事情:

SELECT name1, name2, left(name1,2) + '_' + left(name2,2), ID, ID + left(name1,2) + '_' + left(name2,2)

from person

所以left(name1,2) + '_' + left(name2,2)被使用了一次以上。有什么方法可以做得更好。我有查询,我必须调用相同的函数链10-15次。

其他例子:

我需要通过子查询获取值的一些查询

e.g。

Select name, (Select something from some_table where X=Y) , age from person

在某些情况下,我确实需要从子查询返回的值为另一列。

e.g。

Select name, (Select something from some_table where X=Y) , age,
left( (Select something from some_table where X=Y),2) as Test

from person

必须有一种更简单的方法......对吧?

1 个答案:

答案 0 :(得分:0)

您可以使用外部应用来重复使用代码,如下所示:

Select p.name, x.something, p.age, left(x.something,2) as Test
from person p
outer apply (
    Select something from some_table s where s.X=p.Y
) x