簡體   English   中英

SQL-左聯接中的表別名

[英]SQL - Table alias in Left Join

我試圖用Left Join編寫一個簡單的SQL查詢。

這是查詢:

SELECT * 
FROM ( 
   SELECT * 
   FROM TRN_IN.COIT AS TRANSMISSIONS
     LEFT JOIN ( 
       SELECT TRNNumber ,COUNT(ID) 
       FROM TRN_IN.COIT AS TOTAL_LINES   
       WHERE DataPiece02 = 'TO'   
       GROUP BY TRNNumber 
   ) ON TRANSMISSIONS.TRNNumber  = TOTAL_LINES.TRNNumber
)

第二個表別名為TOTAL_LINES。

運行它時,出現錯誤,未列出TOTAL_LINES。

奇怪的是,當嘗試自行運行第二個查詢時,沒有錯誤:

(SELECT TRNNumber ,COUNT(ID) 
 FROM TRN_IN.COIT AS TOTAL_LINES 
 WHERE DataPiece02 = 'TO' 
 GROUP BY TRNNumber )

有人知道嗎?

希望您在錯誤的位置分配了AS TOTAL_LINES表別名。

在第二個子查詢之后放置表別名名稱將解決您的問題。

您可以嘗試以下查詢:

SELECT *
FROM (
    SELECT *
    FROM TRN_IN.COIT AS TRANSMISSIONS
    LEFT JOIN (
        SELECT TRNNumber
            ,COUNT(ID) AS CountDetails
        FROM TRN_IN.COIT 
        WHERE DataPiece02 = 'TO'
        GROUP BY TRNNumber
        ) AS TOTAL_LINES ON TRANSMISSIONS.TRNNumber = TOTAL_LINES.TRNNumber
    ) AS Result

TOTAL_LINES必須是整個select的別名,而不是from子句中的表。 改成:

SELECT * FROM ( SELECT * FROM TRN_IN.COIT AS TRANSMISSIONS

LEFT JOIN ( SELECT TRNNumber ,COUNT(ID) FROM TRN_IN.COIT WHERE DataPiece02 = 'TO'   GROUP BY TRNNumber ) AS TOTAL_LINES   

ON TRANSMISSIONS.TRNNumber  = TOTAL_LINES   .TRNNumber)

嘗試這個..

SELECT TOTAL_LINES.TRNNumber,COUNT(TOTAL_LINES.ID) FROM TRN_IN.COIT TRANSMISSIONS LEFT JOIN TRN_IN.COIT TOTAL_LINES 
ON TRANSMISSIONS.TRNNumber  = TOTAL_LINES.TRNNumber
WHERE TOTAL_LINES.DataPiece02 = 'TO'   GROUP BY TOTAL_LINES.TRNNumber;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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