/> 【悬赏】精通SQL的朋友请进【高分悬赏】 [已结帖,结帖人:jjcrazy] .[华 软 网]
[华 软 网]
编程论坛 楼主 表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查出来? .[华 软 网]
[华 软 网]
编程论坛 1 个网友回答: PS: 只能用SQL语句来实现,不允许用SQL程序来实现。 .[华 软 网]
[华 软 网]
编程论坛 2 个网友回答: 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就是日期不再同一天 .[华 软 网]
[华 软 网]
编程论坛 3 个网友回答: 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 .[华 软 网]
[华 软 网]
编程论坛 4 个网友回答: 楼上真猛,给分