【发布时间】:2014-02-18 03:48:53
【问题描述】:
Membership 表包含每个成员每年 1 条记录(在此示例中进行了简化。
我想要尚未续订 2014 年的 2013 年成员。这与我逻辑上的结果一样接近,但我得到空结果
SELECT Users.UserID
, YEAR(Membership.MemYear) AS MemYear
, Users.MailTo
, Users.StreetAddress
, Users.Address2
, Users.City
, StateLookup.State
, Users.Zip
FROM Users INNER JOIN Membership
ON Users.UserID = Membership.UserID
INNER JOIN StateLookup
ON Users.StateID = StateLookup.StateID
where YEAR(Membership.MemYear) = '2013'
and not exists
(SELECT Users.UserID, YEAR(Membership.MemYear) AS MemYear
, Users.MailTo, Users.StreetAddress, Users.Address2
, Users.City, StateLookup.State, Users.Zip
FROM Users INNER JOIN Membership AS Membership_1
ON Users.UserID = Membership_1.UserID
INNER JOIN StateLookup
ON Users.StateID = StateLookup.StateID
where YEAR(Membership_1.MemYear)='2014')
帮助表示赞赏!
【问题讨论】:
-
为什么需要状态查找,'UserID' 不是唯一的吗?
-
Member 表中 MemYear 列的数据类型是什么??
标签: sql sql-server