我有一个查询是下一个:
select upper(vchPaterno+' '+vchMaterno+' '+vchNombre) as Nombre
from LK_REP.db_intranet.[dbo].[Empleado_tb] p2 inner join
LK_SAP.[P01].[p01].[PA0001] p1
on p1.SNAME = p2.Nombre
有可能让这个加入吗?
如果执行此操作,则错误消息为:
Msg 207,Level 16,State 1,Line 11 列名称无效' Nombre'。
答案 0 :(得分:0)
您可以重复表达式:
select upper(p2.vchPaterno + ' ' + p2.vchMaterno+' ' + p2.vchNombre) as Nombre
from LK_REP.db_intranet.[dbo].[Empleado_tb] p2 inner join
LK_SAP.[P01].[p01].[PA0001] p1
on p1.SNAME = upper(p2.vchPaterno + ' ' + p2.vchMaterno+' ' + p2.vchNombre);
这是最简单的方法。对于这个问题,我建议您将列作为计算列添加到表中:
alter table LK_REP.db_intranet.[dbo].[Empleado_tb]
add nombre as (upper(p2.vchPaterno + ' ' + p2.vchMaterno+' ' + p2.vchNombre) persisted;
create index idx_Empleado_tb_nombre on LK_REP.db_intranet.[dbo].[Empleado_tb](nombre);
计算列和索引有利于提高性能。
答案 1 :(得分:0)
您不能使用别名来引用列,除非它在您的ORDER BY
试试这个:
SELECT UPPER(vchPaterno+' '+vchMaterno+' '+vchNombre) as Nombre
FROM LK_REP.db_intranet.[dbo].[Empleado_tb] p2
INNER JOIN LK_SAP.[P01].[p01].[PA0001] p1
ON p1.SNAME = UPPER(vchPaterno+' '+vchMaterno+' '+vchNombre)
答案 2 :(得分:0)
不,您可以使用AS中的列而不是此处。在连接中,您需要一个列名(外键)