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'
))