[英]SQL - Table alias in Left Join
I am trying to write a simple SQL query with Left Join. 我试图用Left Join编写一个简单的SQL查询。
This is the query: 这是查询:
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
)
Second table alias is TOTAL_LINES. 第二个表别名为TOTAL_LINES。
When running it, I get an error that TOTAL_LINES is not listed. 运行它时,出现错误,未列出TOTAL_LINES。
The strange thing is, that When trying to run the second query by itself, there is no error: 奇怪的是,当尝试自行运行第二个查询时,没有错误:
(SELECT TRNNumber ,COUNT(ID)
FROM TRN_IN.COIT AS TOTAL_LINES
WHERE DataPiece02 = 'TO'
GROUP BY TRNNumber )
Anybody has a clue? 有人知道吗?
Hope you are assign the AS TOTAL_LINES
table alias name in the wrong place. 希望您在错误的位置分配了
AS TOTAL_LINES
表别名。
Placing the table alias name after second sub query will solve your problem. 在第二个子查询之后放置表别名名称将解决您的问题。
Can you try the query below: 您可以尝试以下查询:
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 must be the alias of the whole select, not on the table in from clause. TOTAL_LINES必须是整个select的别名,而不是from子句中的表。 Change To:
改成:
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)
Try this.. 尝试这个..
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.