Я кодировал эту последнюю проблему весь день, и файл должен быть представлен завтра для моего класса базы данных SQL Server.У вас возникли проблемы с общим выражением таблицы в SQL Server Adventureworks
Я должен создать CTE, который создаст временную таблицу всех бизнес-достижителей и полов всех женщин-женщин из таблицы Employee
. Затем верните businessentityid & пол из CTE вместе с именем сотрудника, фамилией сотрудника и типом лица из таблицы лиц, где тип лица является «EM»
Мой код Я просто преобразовал все гендерные метки в F и меняет PersonType на EM, это почти становится комичным, сколько раз я начинал с нуля.
WITH cte_name2 AS
(
SELECT
FirstName, LastName, PersonType
FROM
Person.Person
), cte_name1 AS
(
SELECT
Gender, BusinessEntityID
FROM
HumanResources.Employee
)
SELECT
cte_name1_1.BusinessEntityID, cte_name1_1.Gender,
cte_name2_1.FirstName, cte_name2_1.LastName, cte_name2_1.PersonType
FROM
cte_name1 AS cte_name1_1
CROSS JOIN
cte_name2 AS cte_name2_1
WHERE
(NOT (cte_name1_1.Gender LIKE N'M'))
AND (cte_name2_1.PersonType = N'EM')
Может ли кто-нибудь сказать мне, что я сделал не так? Спасибо.
необходимо добавить BusinessEntityID в cte_name2, тогда основной запрос является внутренним соединением между cte_name1 и cte_name2 на BusinessEntityId – Jayvee
. Я внес изменения, которые вы предложили, но CROSS JOIN не изменится на INNER JOIN, предложение WHERE будет красным , –
Возможно, вам нужно будет добавить предикат соединения ON: join ... ON cte_name2_1.BusinessEntityID = cte_name1_1.BusinessEntityID, извините, я не могу дать вам полное решение, потому что мы не должны делать это для домашних заданий – Jayvee