【悬赏】精通SQL的朋友请进【高分悬赏】

jjcrazy 2008-11-13 09:26:05
表table t_table结构如下:


本人 对方 标志 单据号 日期
------------------------------------------------------
AAA BBB 0(出) 0001 2008-01-01
BBB AAA 1(入) 0001 2008-01-01

AAA BBB 0(出) 0002 2008-01-01
BBB AAA 1(入) 0002 2008-01-02

AAA BBB 0(出) 0003 2008-01-03

要求:
同一单据必须在同一天做出入,如果是隔日出入或者只出未入,都是违规,需要监控出来。

现在求一句SQL可以查出隔日出入和只出未入的单据号,也就是说,0001是正常, 0002(日期不再同一天)和0003(只出未入)都是违规,要怎么用一句SQL查出来?
...全文
44 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jjcrazy 2008-11-13
  • 打赏
  • 举报
回复
楼上真猛,给分
xxd08cn 2008-11-13
  • 打赏
  • 举报
回复
select b.*
from (select *
from t_table
where 标志 = 0) a
left join
(select *
from t_table
where 标志 = 1) b
on a.单据号 = b.单据号
where a.日期 <> b.日期
union all
select a.*
from (select *
from t_table
where 标志 = 0) a
left join
(select *
from t_table
where 标志 = 1) b
on a.单据号 = b.单据号
where a.日期 <> b.日期
or b.单据号 is null
xxd08cn 2008-11-13
  • 打赏
  • 举报
回复
select a.*,b.*
from (select *
from t_table
where flag = 0) a
left join
(select *
from t_table
where flag = 1) b
on a.单据号 = b.单据号
where a.日期 <> b.日期
or b.单据号 is null
这是得到横表,b为null就是只出未入 b不是null就是日期不再同一天
jjcrazy 2008-11-13
  • 打赏
  • 举报
回复
PS: 只能用SQL语句来实现,不允许用SQL程序来实现。

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧