簡體   English   中英

在子查詢中使用查詢結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM