Sql 在子查询中使用查询结果
我对这个问题有疑问。我读了不少东西,但还没有找到解决办法。问题在于子查询——它确实不喜欢它。有人能帮我把这件事做好吗 第一个表表示已执行的工作表,第二个表显示员工信息。我基本上是在使用“职位报告对象”字段(人力资源代码)获取员工的主管姓名。顺便说一下,这是在Teradata中 谢谢Sql 在子查询中使用查询结果,sql,subquery,teradata,Sql,Subquery,Teradata,我对这个问题有疑问。我读了不少东西,但还没有找到解决办法。问题在于子查询——它确实不喜欢它。有人能帮我把这件事做好吗 第一个表表示已执行的工作表,第二个表显示员工信息。我基本上是在使用“职位报告对象”字段(人力资源代码)获取员工的主管姓名。顺便说一下,这是在Teradata中 谢谢 select t1.record_number, T1.record_created_by, T2.last_name, T2.first_name, T2.employee_no, t2.position_numb
select
t1.record_number,
T1.record_created_by,
T2.last_name,
T2.first_name,
T2.employee_no,
t2.position_number,
T2.position_reports_to as SUPID,
(select last_name from T2 where SID=T2.position_nbr) as SUP
from T1
left join T2 on T1.record_created_by=T2.employee_no
where
t1.record_create_date=current_date
您可以尝试另一个
LEFT JOIN
,而不是子查询:
SELECT
t1.record_number,
T1.record_created_by,
T2.last_name,
T2.first_name,
T2.employee_no,
t2.position_number,
T2.position_reports_to AS SUPID,
sup.last_name AS sup_last_name
FROM T1
LEFT JOIN T2 ON T1.record_created_by=T2.employee_no
LEFT JOIN T2 sup ON sup.SID=T2.position_nbr
WHERE t1.record_create_date=current_date
您可以尝试另一个
LEFT JOIN
,而不是子查询:
SELECT
t1.record_number,
T1.record_created_by,
T2.last_name,
T2.first_name,
T2.employee_no,
t2.position_number,
T2.position_reports_to AS SUPID,
sup.last_name AS sup_last_name
FROM T1
LEFT JOIN T2 ON T1.record_created_by=T2.employee_no
LEFT JOIN T2 sup ON sup.SID=T2.position_nbr
WHERE t1.record_create_date=current_date
您正在
中引用T2,其中SID=T2。位置\u nbr
但不清楚要使用哪个T2。它可以是主FROM子句或子查询中的一个。由于存在歧义,查询无法编译
为了使其正常工作,您需要为其中一个T2s添加别名
例如
但是,如图所示,您可以再次连接到同一个表,该表通常性能更好。您在
中引用了T2,其中SID=T2。位置\u nbr
但不清楚要使用哪个T2。它可以是主FROM子句或子查询中的一个。由于存在歧义,查询无法编译
为了使其正常工作,您需要为其中一个T2s添加别名
例如
但是,如图所示,您可以再次加入同一个表,这通常会表现得更好。这非常有效。我需要在加入中添加一个“as”,但除此之外,它还不错。当我第二次尝试将其分层以获得下一级管理时,我用尽了假脱机空间。我想你不可能全部赢。谢谢你们的帮助,先生们,这很有效。我需要在加入中添加一个“as”,但除此之外,它还不错。当我第二次尝试将其分层以获得下一级管理时,我用尽了假脱机空间。我想你不可能全部赢。谢谢你们的帮助,先生们。