Ошибка SQL-запятой - PullRequest
0 голосов
/ 18 мая 2018

Я работаю над заданием для школы для 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) "и выдает ошибку" Неверный синтаксис рядом с ',' -

Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Используйте правильный явный синтаксис 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 без (длина)

0 голосов
/ 18 мая 2018

Вы пропустили закрывающую скобку перед запятой.

(EmployeeTitles.Title + ' ' + CAST (Employees.Level AS VARCHAR), 

должно стать

(EmployeeTitles.Title + ' ' + CAST (Employees.Level AS VARCHAR)), 
...