まず、ご質問は私の問題を説明していないと私は質問としてそれを伝える方法を知らない。SQL外部結合ビュー
各支店でポジション監督の女性と男性の数をカウントしたいと思います。
だから、これは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
しかし、ID「B002」の支店にはANzahlFSuperv = 0とANzahlMSuperv = 0が設定されていません。したがって、それには超代理店はありません。だからこの結果を得る方法は?
このBranchIDを取得するには、解決策がビューに含まれている必要があります。
私は無駄なことをすべて試みました。
あなたは私を援助してくれることを願っています!
ありがとうございます!
。効果的に 'OUTER JOIN'を' INNER JOIN'にしています。なぜなら、 'OUTER JOIN'の結果が返された後*を実行するからです。 – Siyual
ありがとうねえ、これは内側の結合する必要があります。 – IsoFunCode
私はこれを試しました:SELECT Branch.BranchID、COUNT(*)AnzahlM、Staff.positionとして スタッフから内部JOIN 支店ON支店ブランチID = Staff.BranchFK AND性別LIKE 'F' AND LIKE 'Supervisor' GROUP BY Branch.BranchID、Staff.position しかし、動作しません!同じ結果! – IsoFunCode