Прежде всего извините, вопрос не описывает мою проблему, и я не знаю, как сказать это как вопрос.SQL Outer Join views
Я хочу рассчитать, сколько женщин и мужчин с руководителем должности работает в каждой отрасли.
Так что это SQL:
CREATE VIEW Women (BranchID,AnzahlF,position) AS
SELECT Branch.BranchID, COUNT(*) As AnzahlF,Staff.position
FROM Staff full outer JOIN
Branch ON Branch.BranchID = Staff.BranchFK
WHERE gender LIKE 'F' AND position LIKE 'Supervisor'
GROUP BY Branch.BranchID,Staff.position
CREATE VIEW Men (BranchID,AnzahlM,position) AS
SELECT Branch.BranchID,COUNT(*) As AnzahlM ,Staff.position
FROM Staff Full outer JOIN
Branch ON Branch.BranchID = Staff.BranchFK
WHERE gender LIKE 'M' AND position LIKE 'Supervisor'
GROUP BY Branch.BranchID,Staff.position
Select ISNULL(Women.BranchID, Men.BranchID) AS BranchID,
Case When (Women.AnzahlF is Null) THEN 0
ELSE Women.AnzahlF END As ANzahlFSuperv,
Case When (Men.AnzahlM is Null) THEN 0
ELSE Men.AnzahlM END As ANzahlMSuperv
from Women Full outer join Men On Women.BranchID = Men.BranchID
Group by Women.BranchID, Men.BranchID,Women.ANzahlF,Men.AnzahlM Order by BranchID
Это выход: BranchID, ANzahlFSuperv, ANzahlMSuperv
B001,2,0
B003,1,1
B004,1,1
B005,1,0
B006,1,0
B007,0,2
B008,1,1
B0 09,0,1
B010,0,1
B011,1,0
B012,0,1
B013,1,0
B014,1,0
=> Отсутствует B002, 0,0
Но я не получаю ветвь с идентификатором «B002», у нее есть ANzahlFSuperv = 0 и ANzahlMSuperv = 0. Поэтому у него нет супервизора. Итак, как получить этот результат?
Решение должно быть в представлениях, поэтому, как получить этот BranchID.
Я пробовал все, но ничего не стоял.
Надеюсь, вы, ребята, можете помочь мне!
Спасибо!
Переместите 'WHERE' положение в' ON' пункта. Это эффективно делает ваш 'OUTER JOIN'' INNER JOIN', так как он выполняет * после того, как будут возвращены результаты «OUTER JOIN». – Siyual
Спасибо, что это должно быть внутреннее соединение, иногда вы пытаетесь все, хотя знаете, что не делает, так как я попробую это благодаря! – IsoFunCode
Я пробовал: SELECT Branch.BranchID, COUNT (*) As AnzahlM, Staff.position FROM Staff internal JOIN Branch ON Branch.BranchID = Staff.BranchFK И пол LIKE 'F' И позиция LIKE 'Supervisor' GROUP BY Branch.BranchID, Staff.position но не работает! Тот же результат! – IsoFunCode