SQL Server 2012 を使用しています。
AdvApp.vPortfolioGroupMemberFlattenedというビューがあります。ポートフォリオグループコードマスターまたはポートフォリオグループコードが開いているが、両方のグループにはない すべてのメンバー ID を返したいと考えています。他のグループのメンバーは気にしません。
次のスタックオーバーフローの記事は、私が必要としているものに近いものですが、テーブルをそれ自体に結合するときに機能しないようです。
これは私のテーブルです。
PortfolioGroupCode  MemberID    MemberCode
master              316         abc
master              317         def
open                316         abc
open                317         def
open                321         ghi
master              322         jkl
closed               89         lmn
これは、マスターとオープンのメンバー間のデルタを示す私の望ましい結果です。
PortfolioGroupCode  MemberID    MemberCode
open                321         ghi
master              322         jkl
前述の記事から、次の 2 つのクエリを試しました。
SELECT A.*, B.*
FROM [AdvApp].[vPortfolioGroupMemberFlattened] a
FULL JOIN [AdvApp].[vPortfolioGroupMemberFlattened] b
ON (A.PortfolioGroupCode = B.PortfolioGroupCode)
WHERE A.PortfolioGroupCode IS NULL OR B.PortfolioGroupCode IS NULL
と
SELECT DISTINCT a.membercode, a.portfoliogroupcode
FROM [AdvApp].[vPortfolioGroupMemberFlattened] a
WHERE (
NOT EXISTS (
SELECT b.membercode
FROM [AdvApp].[vPortfolioGroupMemberFlattened] b
WHERE a.PortfolioGroupCode = 'master'
AND b.PortfolioGroupCode = 'open'
))