我在我的数据库中有这个表,我有一个历史记录:
Tabelname:Activity
ActivityID | DateBegin | DateEnd
1 2013-01-01 2013-01-15
1 2013-01-15 9999-12-31
2 2013-01-20 2013-03-15
现在我想编写一个Query,它将返回带有DateEnd =的id 9999-12-31。在这个例子中,我想要仅返回id 2
我编写了这个查询,但它不起作用:(我得到NULL的return语句)
SELECT ActivityID
FROM [dbo].[Activity]
where NOT EXISTS (SELECT ActivityID from
Activity where DateEnd ='9999-12-31')
有人能帮助我吗?
非常感谢
答案 0 :(得分:2)
如果要返回所有没有任何日期为9999-12-31的行的ID,您应首先检查您不想返回哪些ID,然后在查询中避免使用它们。
所以查询变为:
SELECT ActivityID
FROM [dbo].[Activity]
WHERE ActivityID NOT IN (SELECT ActivityID from
[dbo].[Activity] WHERE DateEnd ='9999-12-31')
答案 1 :(得分:1)
SELECT ActivityID
FROM dbo.Activity As x
WHERE NOT EXISTS (
SELECT ActivityID
FROM dbo.Activity
WHERE DateEnd ='9999-12-31'
AND ActivityID = x.ActivityID
)
答案 2 :(得分:0)
请尝试
SELECT ActivityId from Activity where DateEnd != CONVERT(varchar(10), '9999-12-31',101)