【发布时间】:2013-06-30 14:55:34
【问题描述】:
我使用的是 SQL Server 2012。
我有一个名为 AdvApp.vPortfolioGroupMemberFlattened 的视图 我想返回投资组合组代码 master 或投资组合组代码 open 但不在两个组中的所有成员 ID。我不关心其他组的成员。
以下 stackoverflow 文章接近我需要的内容,但在将表连接到自身时似乎不起作用。
sql query to return differences between two tables。
这是我的桌子。
PortfolioGroupCode MemberID MemberCode
master 316 abc
master 317 def
open 316 abc
open 317 def
open 321 ghi
master 322 jkl
closed 89 lmn
这是我想要的结果,显示了 master 和 open 成员之间的差异。
PortfolioGroupCode MemberID MemberCode
open 321 ghi
master 322 jkl
我尝试了以下两个查询,均来自上述文章。
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'
))
【问题讨论】:
标签: sql left-join sql-server-2012 self-join not-exists