Создание предложения из нескольких таблиц в SQL - PullRequest
1 голос
/ 16 июня 2019

Я пытаюсь создать это предложение «Сабле 12 лет», используя приведенный ниже код в SQL.

select 
    businessname+' is ' + cast(count(e.id)as varchar(11))
from
    Department d
join 
    EmployeeDepartmentHistory EDH on edh.departmentid = D.departmentid
join 
    employee e on edh.id = e.id
group by 
    name
+' years old'

Если бы я запустил этот раздел кода

select 
    businessname+' is ' + cast(count(e.id)as varchar(11))
from   
    Department d
join 
    EmployeeDepartmentHistory EDH on edh.departmentid = D.departmentid
join 
    employee e on edh.id = e.id
group by 
    name

Я получу "Сабер 12"

Но у меня проблема с получением строки "old old" в конце.

Я получаю это сообщение об ошибке с полным кодом

Сообщение 8120, Уровень 16, Состояние 1, Строка 4
Столбец HumanResources.Department.Name недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.

1 Ответ

1 голос
/ 16 июня 2019

Не имея некоторой необходимой информации, такой как:

  1. Структура таблиц, какие таблицы имеют какие столбцы
  2. Как таблицы связаны друг с другом,
  3. То, что вы пытаетесь получить (например, что означает здесь «название компании»)

становится немного трудно дать правильное предложение.

Итак, предполагая, что:

  1. EmployeeDepartmentHistory - это мостовая таблица между таблицами Department и Employee, которая должна заботиться о многих: многие связи между таблицами Department и Employee

  2. Одно название компании (к какой бы таблице она ни принадлежала)to) имеет много сотрудников (e.id) под ним

  3. Вы пытаетесь рассчитать количество сотрудников (e.id) для каждого названия компании,

Это будет правильный запрос:

SELECT businessname+' is ' + CAST(COUNT(e.id) AS VARCHAR(11)) + ' years old' 
FROM   Department d
       JOIN EmployeeDepartmentHistory EDH on edh.departmentid=D.departmentid
       JOIN employee e on edh.id=e.id 
GROUP  BY businessname
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...