如何根据具体日期显示或隐藏查询结果?

时间:2017-06-15 19:58:26

标签: sql sql-server-2008

我将所有记录都放在一张表中。我只想查看任何用户的记录,如果他们在DATE字段中没有日期> = 2017-01-01的记录。

因此,如果说用户A有多条记录:

RID   USER    DATE
1       A      2015-01-01  
2       A      2016-01-01
3       A      2017-01-01

由于日期> = 2017-01-01的记录,我不希望看到用户A的任何记录。

如果上面的日期> = 2017-01-01的RID 3不存在,那么我想查看用户A的任何或所有其他记录,即RID 1& 2。

我不知道!

很抱歉这里是我的所有代码都不起作用,它仍会显示那些日期> ='2017-01-01'的所有记录,它只是没有显示他们有日期的记录> = 2017-01-01。如果他们有一个日期> = 2017-01-01的记录,我不想看到任何记录:

select t.*, t2.*, T3.*
from t
left outer join t2 on t.id = t2.id
left outer join t3 on t3.id = t2.id
where not exists (select 1
                  from t t2
                  where t2.user = t.user and t2.date >= '2017-01-01'
                 )
and t3.name = 'abc'
and t2.status = 'con'
and (t.note like '%true%' or t.note like '%false%')
order by 1,2

谢谢,

MP

1 个答案:

答案 0 :(得分:2)

只需使用select t.* from t where not exists (select 1 from t t2 where t2.user = t.user and t2.date >= '2017-01-01' );

which()