【发布时间】:2015-11-05 12:43:53
【问题描述】:
我在 SQL Server 中有一个这样的表:
Name ID StartDate EndDate
--------------------------------
James 232 2005 2015
James 232 2001 2006
Joe 600 1982 2005
Lord 608 2003 2005
Lord 608 2006 2012
Lord 608 1999 2004
Lee 122 2001 2003
Lee 122 2002 2006
如果所有记录都满足以下条件,我需要编写一个仅包含名称/ID 记录的查询: StartDate 不在 2005 年之后并且 EndDate 不能在 2005 年之前。
因此查询的结果应该如下:
Name ID StartDate EndDate
-------------------------------
James 232 2005 2015
James 232 2001 2006
Joe 600 1982 2005
以下是我的查询,它错误地返回了 Lord 和 Lee 的三条记录:
SELECT *
FROM #FortuneCompany fc
WHERE EXISTS (
SELECT 1
FROM #FortuneCompany fc1
WHERE fc1.ID = fc.ID
AND YEAR(fc1.StartDate)<=2005
AND YEAR(fc1.EndDate)>=2005
)
【问题讨论】:
-
您的查询在哪里?
-
到目前为止你尝试过什么 SQL?
-
where startdate <= 2005 and enddate >= 2005. -
为什么不应该包含 joe ` Joe 600 1982 2005` 1982 小于 2005 而 2006 大于 2005,所以应该包含
-
SELECT * FROM #FortuneCompany WHERE EXISTS (SELECT 1 FROM #FortuneCompany fc1 WHERE fc1.ID = fc.ID AND YEAR(fc1.StartDate)=2005 ) 这是我的查询
标签: sql sql-server sql-server-2008 sql-server-2012