判定时间段是否有重复

formatcdefg 2012-12-02 09:30:17
判定时间段是否有重复,因为要从这3个时间段取业务单据,如果有重复就会造成单据重复的错误现象
另外这3个时间段不一定是从小到大的.
时间段1 :2012-11-28 至 2012-11-30
时间段2 :2012-11-29 至 2012-12-01
时间段3 :2012-11-26 至 2012-11-29
...全文
273 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
DBA_磊仔 2012-12-02
  • 打赏
  • 举报
回复
if exists(SELECT * FROM dbo.TB AS S1  
  JOIN TB AS S2  
    ON S1.ID <> S2.ID  
    AND (S2.endtime > S1.bgnTime AND S2.bgnTime < S1.endtime))  
rollback  
专注or全面 2012-12-02
  • 打赏
  • 举报
回复
那就要从业务入手了,重新组织数据或者其他的 很多事情都是有其他办法的,换个思路或许会好很多
formatcdefg 2012-12-02
  • 打赏
  • 举报
回复
请问这不是要查数据吗,那么数据量大时怎么办
专注or全面 2012-12-02
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
把他们的起始时间和结束时间的日期between and一下,如果有2条或以上就证明重复了。
起始时间是个大范围啊 下面的每一行是小范围
發糞塗牆 2012-12-02
  • 打赏
  • 举报
回复
把他们的起始时间和结束时间的日期between and一下,如果有2条或以上就证明重复了。
DBA_磊仔 2012-12-02
  • 打赏
  • 举报
回复
引用 12 楼 Junior_yuan 的回复:
引用 7 楼 tanleittl 的回复:SQL code??



12345

if exists(SELECT * FROM dbo.TB AS S1 JOIN TB AS S2 ON S1.ID <> S2.ID AND (S2.endtime > S1.bgnTime AND S2.bgnTime < S1.endti……

画个图表示一下
formatcdefg 2012-12-02
  • 打赏
  • 举报
回复
是否需要按开始时间点进行升序排序,再进行对较呢
专注or全面 2012-12-02
  • 打赏
  • 举报
回复
循环 开始时间是否 between and 其他时间段的起始时间 结束时间是否 between and 其他时间段的起始时间
小孩快跑 2012-12-02
  • 打赏
  • 举报
回复
引用 7 楼 tanleittl 的回复:
SQL code?? 12345 if exists(SELECT * FROM dbo.TB AS S1 JOIN TB AS S2 ON S1.ID <> S2.ID AND (S2.endtime > S1.bgnTime AND S2.bgnTime < S1.endtime)) rollback
请问一下S2.endtime > S1.bgnTime AND S2.bgnTime < S1.endtime 在这里可以判断出时间段是相同的吗?
cmy147 2012-12-02
  • 打赏
  • 举报
回复
对于同一个表的关联一直不怎么会用,学习了
cmy147 2012-12-02
  • 打赏
  • 举报
回复
对于同一个表的关联一直不怎么会用,学习了
maysoft 2012-12-02
  • 打赏
  • 举报
回复
七楼正解....
专注or全面 2012-12-02
  • 打赏
  • 举报
回复
引用 7 楼 tanleittl 的回复:
SQL code??12345if exists(SELECT * FROM dbo.TB AS S1 JOIN TB AS S2 ON S1.ID <> S2.ID AND (S2.endtime > S1.bgnTime AND S2.bgnTime < S1.endtime)) rollback
雷仔实在是高哇 对于同一个表的关联一直不怎么会用,学习了

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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