我正在为学校做SQL作业,这是我正在做的查询。
SELECT
Regions.RegionName, Countries.CountryName,
(Employees.LastName + ', ' + Employees.FirstName) AS EmployeeName,
(EmployeeTitles.Title + ' ' + CAST (Employees.Level AS VARCHAR),
Employees.Salary
FROM
Regions,
Countries,
Employees,
EmployeeTitles
WHERE
Regions.RegionID = Countries.RegionID AND
Countries.CountryID = Employees.CountryID AND
Employees.TitleID = EMployeeTitles.TitleID
ORDER BY
RegionName,
CountryName,
LastName,
Title,
Salary;
给我错误的逗号就在"Cast(Employee.Level AS VARCHAR("之后,并且给我一个错误,说"','附近的语法不正确-
谢谢。
您在逗号之前错过了右括号。
(EmployeeTitles.Title + ' ' + CAST (Employees.Level AS VARCHAR),
应该成为
(EmployeeTitles.Title + ' ' + CAST (Employees.Level AS VARCHAR)),
使用正确的显式JOIN
语法:
select r.RegionName, c.CountryName,
concat(e.LastName, ',', e.FirstName) AS EmployeeName,
concat(et.Title, ',', CAST(e.Level AS VARCHAR(255))) AS [??],
e.Salary
from Regions r
inner join Countries c on c.RegionID = r.RegionID
inner join Employees e on e.CountryID = c.CountryID
inner join EmployeeTitles et on et.TitleID = e.TitleID
order by r.RegionName, c.CountryName, e.LastName, e.title, e.salary;
使用cast/convert()
函数时始终定义长度。这里有一个有趣的帖子,你可以参考 坏习惯踢:声明 VARCHAR 没有(长度(