[英]Using Query Results in a Subquery
我在查詢時遇到麻煩。 我已經閱讀了很多東西,但尚未找到解決方案。 問題出在子查詢上,它確實不喜歡它。 有人可以幫我這個忙嗎?
第一個表表示“已完成工作”表,第二個表顯示“員工信息”。 我基本上是在嘗試使用人力資源代碼“ position_reports_to”字段來獲取員工的主管名稱。 順便說一下,這是在Teradata中。
謝謝!
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
您在WHERE SID = T2.position_nbr
中引用T2,但不清楚使用哪個T2。 它可以是主FROM子句中或子查詢中的那個。 由於存在歧義,因此無法編譯查詢。
為了使其正常工作,您需要對T2之一進行別名
例如
SELECT
.....
(select last_name from T2 Sup where Sup.SID=T2.position_nbr) as SUP
FROM
T1
left join T2 on T1.record_created_by=T2.employee_no
....
但是,正如bfavaretto的答案顯示的那樣,您可以再次連接到同一張表,通常它的性能通常更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.