我正在尝试编写一个 SQL 查询,但它不断出现语法错误。问题是,错误消息对我根本没有帮助。
这是查询:
SELECT *
FROM
(SELECT
dbo.ciqCompanyUltimateParent.ultimateParentCompanyId,
COUNT(DISTINCT dbo.ciqCompany.companyId) AS Subsidiaries_Count,
COUNT(DISTINCT dbo.ciqCountryGeo.countryId) AS Countries_Count
FROM
dbo.ciqCompanyUltimateParent
INNER JOIN
dbo.ciqCompany ON dbo.ciqCompanyUltimateParent.companyId = dbo.ciqCompany.companyId
INNER JOIN
dbo.ciqCountryGeo ON dbo.ciqCompany.countryId = dbo.ciqCountryGeo.countryId
GROUP BY
dbo.ciqCompanyUltimateParent.ultimateParentCompanyId
)
INNER JOIN
dbo.ciqCompany ON ultimateParentCompanyId = dbo.ciqCompany.companyId
当我执行它时,括号中的内容工作正常(即它执行并返回一个表)。但是,最后一个 INNER JOIN
给出了以下错误:
Msg 156, Level 15, State 1, Line 10
Incorrect syntax near the keyword 'INNER'.
更糟糕的是,当我将上面的语句删减为
SELECT *
FROM
(SELECT
dbo.ciqCompanyUltimateParent.ultimateParentCompanyId,
COUNT(DISTINCT dbo.ciqCompany.companyId) AS Subsidiaries_Count,
COUNT(DISTINCT dbo.ciqCountryGeo.countryId) AS Countries_Count
FROM
dbo.ciqCompanyUltimateParent
INNER JOIN
dbo.ciqCompany ON dbo.ciqCompanyUltimateParent.companyId = dbo.ciqCompany.companyId
INNER JOIN
dbo.ciqCountryGeo ON dbo.ciqCompany.countryId = dbo.ciqCountryGeo.countryId
GROUP BY
dbo.ciqCompanyUltimateParent.ultimateParentCompanyId
)
我遇到了类似的错误 -
Msg 102, Level 15, State 1, Line 9
Incorrect syntax near ')'.
为什么我无法从运行良好的查询中选择 *?
最佳答案
尝试为子查询添加别名。例如
SELECT * FROM
(
....
) SUB
INNER JOIN dbo.ciqCompany
ON SUB.ultimateParentCompanyId = dbo.ciqCompany.companyId
关于sql - 如何找出语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20707638/