这有效:
select
x.long_name as ln
from x
join y on y.ln = x.long_name
这不会:
select
x.long_name as ln
from x
join y on y.ln = x.ln
它可以以某种方式工作吗?以一种简单而紧凑的方式?这很方便,因为我正在生成过滤器表(y
将是一个过滤器表)并以编程方式进行查询。
这有效:
select
x.long_name as ln
from x
join y on y.ln = x.long_name
这不会:
select
x.long_name as ln
from x
join y on y.ln = x.ln
它可以以某种方式工作吗?以一种简单而紧凑的方式?这很方便,因为我正在生成过滤器表(y
将是一个过滤器表)并以编程方式进行查询。
您可以使用apply
在from
子句中定义别名:
select v.ln
from x cross apply
(values (x.long_name)) v(ln) join
y
on y.ln = v.ln
其他替代方法是子查询和 CTE。
您需要使用“表表达式”来使用“结果集”中的列。
select *
from ( -- here we create a table expression named "z"
select
long_name as ln
from x
) z
join y on y.ln = z.ln
如您所见,表表达式“z”具有您想要的列。