I'm using SQL Server 2012.
I have a view called AdvApp.vPortfolioGroupMemberFlattened I want to return all memberid's that are in portfoliogroupcode master or portfoliogroupcode open but are not in both groups. I don't care about members in other groups.
The following stackoverflow article is close to what I need, but doesn't seem to work when joining a table to itself.
sql query to return differences between two tables.
This is my table.
PortfolioGroupCode MemberID MemberCode
master 316 abc
master 317 def
open 316 abc
open 317 def
open 321 ghi
master 322 jkl
closed 89 lmn
This is my desired result showing the delta between members of master and open.
PortfolioGroupCode MemberID MemberCode
open 321 ghi
master 322 jkl
I tried the following two queries, both from the aforementioned article.
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
AND
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'
))