求有点小逻辑的SQL

伙柴人 伙柴人 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
表a

tid 项目名 状态
1 001 3放行
2 002 3放行
3 003 2测试
4 004 1开始
5 005 1开始
...

表B

id tid 时间 状态
1 1 2009-1-3 1开始
2 1 2009-1-5 2测试
3 1 2009-1-6 3放行
4 1 2009-1-8 close
5 1 2009-1-9 3放行

6 2 2009-2-3 1开始
7 2 2009-2-4 close
8 2 2009-2-5 1开始
9 2 2009-2-6 2测试

10 3 2009-2-8 1开始
11 3 2009-2-9 2测试

12 4 2009-2-10 1开始
13 4 2009-2-11 2测试
14 4 2009-2-11 close
15 4 2009-2-12 3放行

16 5 2009-2-13 1开始
17 5 2009-2-14 close
...

我现在要排除 状态里面最后一条记录为close但没有“3放行”的数据 得到如下表:
表C
tid 项目名 时间 状态
1 001 2009-1-6 3放行
2 002 2009-2-6 2测试
3 003 2009-2-9 2测试
4 004 2009-2-7 3放行

我现在的办法就是用几个not in来一个个条件排除 这样性能及不好,但又想不出其他办法 大家帮帮忙啊!

注:数据库结构不能更变 是SQL2005 其中时间字段是varchar类型
...全文
评论 3
收藏 已收藏
分享
返回顶部
伙柴人
C# 111,128 成员 642,536 内容